/ / Routing Railsów i jak zachować widok kategorii DRY? - ruby-on-rails, ruby, ruby-on-rails-3

Routing railsów i jak utrzymać widok kategorii DRY? - ruby-on-rail, ruby, ruby-on-rails-3

Mam model, który ma przypisanie przynależności do kategorii.

Przykład:

  • Rzecz
    • przynależy_do: kategoria
  • Kategoria
    • has_one: rzecz

Czy powinienem utworzyć plik widoku dla każdej kategorii, aby znaleźć daną kategorię, przykład:

views/things/category_name1.html.erb
views/things/category_name2.html.erb
views/things/category_name3.html.erb
views/things/category_name4.html.erb

Czy jest na to wygodniejszy sposób?

Widoki są takie same dla każdej kategorii, z wyjątkiem nazwy kategorii w find metoda. Próbowałem tego:

<%= Thing.find(:all, :conditions => {:category => "Name of category"}) %>

Chcę, aby mój adres URL był /category_name/name_of_thing.

Odpowiedzi:

2 dla odpowiedzi № 1

The friendly_id gem zajmie się generowaniem adresu URL, którego używaszszukam. W swoich trasach będziesz chciał mieć coś podobnego do (Rails 3). Nie chcesz mieć widoku dla każdej kategorii - powinno to być dynamiczne.

resources :categories do
resources :things
end

1 dla odpowiedzi nr 2

Nie! Nie twórz takich zbędnych widoków.

Umieść następujący kod w pliku Category model i dowolny inny model, w którym chcesz mieć opisowe adresy URL:

def to_param
return "#{id} #{name}".parameterize
end

Zarozumiały name jest atrybutem Category, spowoduje to utworzenie unikalnych adresów URL zawierających nazwę kategorii. Jeśli wiesz, że nazwa na pewno będzie unikalna, możesz zamienić linię powrotu na just name.parameterize.