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

Author: The Mini John, 2013-07-20

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.
 23
Author: Rails Guy,
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!

 0
Author: StormTrooper,
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