Rails 3 link_to направляет (редактирует) вложенные ресурсы

Извините, если этот вопрос был задан в другом месте, но я не могу понять это. У меня есть форум с разделами, темами и ответами. Я пытаюсь редактировать и удалять ответы из представления темы шоу. Это структура:

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

Поэтому я просматриваю маршруты, чтобы увидеть, где я связываю свой ответ на редактирование. Я вижу, что его edit_section_topic_reply и в моей ссылке_to я добавляю к нему _path. Теперь вот что не могу понять. Какие параметры я ему передаю? Разве не должно быть:

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

Когда я это делаю, я получаю ActionController::RoutingError из Topics#show.

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">}

Вроде не передает идентификаторы, но предыдущая, моя новая тема работает нормально

new_section_topic_reply_path(@topic, @section)

person a3uge    schedule 04.03.2011    source источник


Ответы (3)


Мне очень не нравится этот аспект помощника link_to. В интересах сделать ваш код более читабельным и менее подверженным ошибкам, я бы посоветовал вам четко указать, какие идентификаторы вы передаете.

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

Я столкнулся со слишком многими тонкими и, казалось бы, безумными ошибками из-за того, что параметры были не в порядке в файле link_to.

person jdl    schedule 05.03.2011
comment
Итак, делая это таким образом, я понял, что идентификатор ответа не вызывает его конкретный идентификатор. Действительно глупая ошибка, я был в петле, поэтому, конечно, @reply ничего не сказал о том, какой это был идентификатор. ‹%= link_to 'Edit', edit_section_topic_reply_path(reply, @topic, @section) %› решил по-другому. answer.id таким образом. Спасибо за помощь! - person a3uge; 05.03.2011
comment
А еще у меня было наоборот. это (@раздел, @тема, путь). - person a3uge; 05.03.2011
comment
Я думаю, вы имели в виду (@section, @topic, @reply). - person GMA; 05.09.2013

Еще один способ редактирования ссылки

<%= link_to [:edit,@section,@topic,@reply] %>
person Saraswathy Renuga    schedule 18.05.2015

Я думаю, что правильный порядок должен быть:

<%= link_to 'Edit', edit_section_topic_reply_path(@section, @topic, @reply) %>
person vasilakisfil    schedule 26.04.2014