que cambiaría la forma en que alcance los hallazgos. Rails 3 es hermoso porque te permite hacer esto porque casi todo es visible.
primer lugar en su controlador que iba a encontrar el recurso de los padres usando algo como esto:
before_filter :find_company
# your actions go here
private
def find_company
@company = Company.find(params[:company_id]) if params[:company_id]
end
Esto debería ser bastante sencillo: encontrar un registro Company
que tiene un ID que coincide con la aprobada por la anidada ruta. Si no está anidado, entonces no va a ser un params[:company_id]
por lo tanto no habría un conjunto de variables @company
.
Luego, si desea que el alcance del proyecto a encontrar, dependiendo de si es o no un @company
se establece. Esto también es fácil. Justo debajo de la primera before_filter
, poner éste:
before_filter :scope_projects
a continuación, definir el método para ello debajo del método find_company
así:
def scope_projects
@projects = @company ? @company.projects : Project
end
Ahora usted está pensando probablemente "WOAH". Lo sé. Yo también.
Ahora donde quiera que haga referencia a la asociación projects
o la clase Project
, use @projects
en su lugar. Por el poder de este método scope_projects
, su aplicación va a saber si está o no decir "todos los proyectos, jamás" o "todos los proyectos, nunca, que se encuentran en la empresa especificada".
Ahora, cuando se llega a los puntos de vista, se podría hacer algo como esto:
<h1><% if @company %><%= @company.name %>'s<% end %> Projects</h1>
Incluso podría moverlo a un ayudante:
def optional_company
if @company
@company.name + "'s"
end
end
Y a su vez que feo trozo-o- lógica en esto:
<h1><%= optional_company %> Projects</h1>
Modificar según sea necesario.
Espero que haya sido útil.
Gracias! Funciona de maravilla. – GSto