Ho un modello che ha un'associazione appartiene_to alle categorie.
Esempio:
- Cosa
- appartiene_to: categoria
- Categoria
- has_one: cosa
Devo creare un file di visualizzazione per ogni categoria per trovare la categoria data, ad esempio:
views/things/category_name1.html.erb
views/things/category_name2.html.erb
views/things/category_name3.html.erb
views/things/category_name4.html.erb
O c'è un modo più conveniente per farlo?
Le visualizzazioni sono le stesse per ogni categoria ad eccezione del nome della categoria nel file find
metodo. Ho provato questo:
<%= Thing.find(:all, :conditions => {:category => "Name of category"}) %>
Voglio che il mio URL sia /category_name/name_of_thing
.
risposte:
2 per risposta № 1Il friendly_id gem gestirà la generazione dell'URL che stai utilizzandocercando. Nelle tue rotte, vorrai avere qualcosa sulla falsariga di (Rails 3). Non vuoi avere una vista per ogni categoria - questa dovrebbe essere dinamica.
resources :categories do
resources :things
end
1 per risposta № 2
No! Non creare visualizzazioni ridondanti in questo modo.
Inserisci il codice seguente nel tuo file Category
model e qualsiasi altro modello a cui desideri avere URL descrittivi:
def to_param
return "#{id} #{name}".parameterize
end
assumendo name
è un attributo di Category
, questo creerà URL univoci contenenti il nome della categoria. Se sai che il nome sarà sicuramente univoco, puoi sostituire la riga di ritorno con just name.parameterize
.