Vorrei cambiare il modo di esplorare i risultati. Rails 3 è bello per permetterti di farlo perché praticamente tutto è possibile.
In primo luogo nel controller avrei trovato la risorsa genitore utilizzando qualcosa di simile:
before_filter :find_company
# your actions go here
private
def find_company
@company = Company.find(params[:company_id]) if params[:company_id]
end
Questo dovrebbe essere abbastanza semplice: trovare un record Company
che ha un ID che corrisponde a quello passato in dal nidificato itinerario. Se non è nidificato, non ci sarà un params[:company_id]
quindi non ci sarebbe un set di variabili @company
.
Successivamente, si desidera esplorare il progetto, a seconda che sia impostato o meno un valore @company
. Anche questo è facile. Proprio sotto il primo before_filter
, mettere questo:
before_filter :scope_projects
Poi definire il metodo per esso sotto il metodo find_company
in questo modo:
def scope_projects
@projects = @company ? @company.projects : Project
end
Ora probabilmente stai pensando "WOAH". Lo so. Anche a me.
Ora, ovunque si faccia riferimento all'associazione projects
o alla classe Project
, utilizzare invece @projects
. Con la potenza di questo metodo scope_projects
, la vostra applicazione sarà sapere se vuoi dire "tutti i progetti, mai" o "tutti i progetti, mai, che sono in azienda specificata".
Ora, quando si arriva al punto di vista, si potrebbe fare qualcosa di simile:
<h1><% if @company %><%= @company.name %>'s<% end %> Projects</h1>
si potrebbe anche spostare in un aiutante:
def optional_company
if @company
@company.name + "'s"
end
end
E trasformare quel brutto pezzo-o- logica in questo:
<h1><%= optional_company %> Projects</h1>
Modificare come richiesto.
Spero che questo sia stato utile.
Grazie! funziona come un fascino. – GSto