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 № 1The 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
.