Eu tenho um modelo que tem uma associação belongs_to para categorias.
Exemplo:
- Coisa
- belongs_to: categoria
- Categoria
- has_one: coisa
Devo fazer um arquivo de visão para cada categoria para encontrar a categoria dada, exemplo:
views/things/category_name1.html.erb
views/things/category_name2.html.erb
views/things/category_name3.html.erb
views/things/category_name4.html.erb
Ou existe uma maneira mais conveniente de fazer isso?
As visualizações são as mesmas para cada categoria, exceto para o nome da categoria no find
método. Eu tentei isso:
<%= Thing.find(:all, :conditions => {:category => "Name of category"}) %>
Eu quero o meu URL para ser /category_name/name_of_thing
.
Respostas:
2 para resposta № 1o friendly_id gem lidará com a geração de URL que você estáprocurando por. Em suas rotas, você vai querer ter algo nos moldes do (Rails 3). Você não quer ter uma visão para cada categoria - isso deve ser dinâmico.
resources :categories do
resources :things
end
1 para resposta № 2
Não! Não crie visualizações redundantes como essa.
Coloque o seguinte código no seu Category
modelo e qualquer outro modelo que você deseja ter URLs descritivos:
def to_param
return "#{id} #{name}".parameterize
end
Assumindo name
é um atributo de Category
, isso criará URLs exclusivas contendo o nome da categoria. Se você sabe que o nome será definitivamente único, você pode substituir a linha de retorno com apenas name.parameterize
.