2011-03-04 30 views
8

Lo siento si esto se ha preguntado en otro lugar, pero no puedo resolverlo. Tengo un foro con secciones, temas y respuestas. Estoy intentando editar y eliminar respuestas de la vista del tema de la demostración. Esta es la estructura:Rails 3 link_to rutas (editar) recursos anidados

resources :sections do 
    resources :topics do 
    resources :replies 
    end 
end 

por lo que un rastrillo rutas para ver dónde estoy vincular mi edición respuesta. Veo que es edit_section_topic_reply y en mi link_to le agrego _path. Ahora esto es lo que no puedo entender. ¿Qué parámetros estoy pasando? ¿No debería ser:

<%= link_to 'Edit', edit_section_topic_reply_path(@reply, @topic, @section) %> 

me siento un ActionController::RoutingError en Topics#show cuando hago esto.

No route matches {:topic_id=>#<Topic id: 2, section_id: 2, user_id: nil, subject: "subject", body: "body", created_at: "2011-03-04 08:37:37", updated_at: "2011-03-04 21:37:16">, :controller=>"replies", :action=>"edit", :section_id=>nil, :id=>#<Section id: 2, name: "Section", description: "Section Description", created_at: "2011-03-04 07:50:56", updated_at: "2011-03-04 07:50:56">} 

parece que no está pasando identificaciones, pero el nido antes, mi nuevo tema funciona bien

new_section_topic_reply_path(@topic, @section) 

Respuesta

14

No me gusta este aspecto de la link_to ayudante. Con el fin de hacer que el código sea más fácil de leer y menos propenso a errores, sugeriría que usted sea explícito acerca de qué ID está de paso en.

<%= link_to 'Edit', edit_section_topic_reply_path(:id => @reply.id, 
                :topic_id => @topic.id, 
                :section_id => @section.id) %> 

me he encontrado demasiados errores sutiles y aparentemente debido dementes para params estar fuera de servicio en un link_to.

+0

Ah por lo que en hacerlo de esta manera, me di cuenta de la ID respuesta no estaba llamando Es específica CARNÉ DE IDENTIDAD. Error realmente estúpido, estaba en un bucle, por lo que, por supuesto, @ respuesta no dijo nada acerca de qué identificación era en realidad. <% = link_to 'Edit', edit_section_topic_reply_path (reply, @topic, @section)%> lo solucionó de otra manera. respuesta. de esta manera. ¡Gracias por la ayuda! – a3uge

+0

Además, lo tenía al revés. es (@section, @topic, path). – a3uge

+0

Creo que quisiste decir (@section, @topic, @reply). – GMA

0

creo que el orden correcto debería ser:

<%= link_to 'Edit', edit_section_topic_reply_path(@section, @topic, @reply) %> 
3

una forma más para editar enlace

<%= link_to [:edit,@section,@topic,@reply] %> 
Cuestiones relacionadas