Jak tworzyć kategorie w Rails
Próbuję dodać kategorie do mojej aplikacji Rails, ale nie do końca wiem, jak to zrobić.
Mam wiele pinów (obrazów) i chcę, aby użytkownik mógł przypisać kategorię na tych pinach. przypisywanie nie tworzenie, edytowanie lub usuwanie kategorii, po prostu wybierając jedną dla swojego Pina. Oznacza to, że gdy użytkownik przesyła Pina, może wybrać z listy rozwijanej kategorię.
Wtedy inny użytkownik może wybrać z Menu kategorię, a tylko piny w tej kategorii będą na liście.
Jak to zrobić? Od czego zacząć ?
Thank you
2 answers
Najpierw, jeśli nie chcesz zarządzać kategoriami w aplikacji, możesz po prostu dodać pole kategorii w tabeli i wybrać kategorię w aplikacji:
<%= f.select :category, [ 'Box', 'Cover', 'Poster' ], :prompt => 'Select One' %>
Po drugie, jeśli chcesz zarządzać kategoriami w swojej aplikacji, musisz zachować dla niej oddzielny model i tabelę. Możesz więc zacząć od wygenerowania swojego modelu:
rails g model category
Doda model i migrację do katalogu aplikacji. Dodaj rzeczy do swojej migracji:
class CreateCategories < ActiveRecord::Migration
def change
create_table :categories do |t|
t.string :name
t.text :description
## you can add more stuff as per your requirements
t.timestamps
end
end
end
Define Asocjacje w modelu kategorii i Pin dodaj walidację dla tego: -
In Category Model:
has_many :pins
In Pin Model :
belongs_to :category
validates :category, presence: true
Twórz kategorie według kontrolera kategorii i formularza (nie sądzę, muszę ci o tym mówić, jesteś w stanie zrobić to sam)
W formularzu przesyłania Pina dodaj to wybierz:-
<%= f.select :category, Category.all, :prompt => "Select One" %>
Nadzieja, to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-20 05:16:31
Możesz dodać metodę def to_s
do modelu kategorii. Wierzę, że wyświetli jakiś dziwny kod adresu pamięci po prostu za pomocą zwykłego Category.all
w opcji f.select
. Wszystko inne wygląda świetnie!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-26 16:53:15