/ / Rails roteamento e como manter a categoria de exibição DRY? - rubi sobre trilhos, rubi, rubi sobre trilhos-3

Roteamento de Rails e como manter a exibição de categoria DRY? - rubi sobre trilhos, rubi, rubi sobre trilhos-3

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

o 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.