Rails 3 link_to направляет (редактирует) вложенные ресурсы - PullRequest
8 голосов
/ 05 марта 2011

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

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

Итак, я делаю рейк-маршруты, чтобы увидеть, куда я добавляю свой ответ на редактирование. Я вижу, что его edit_section_topic_reply и в моей ссылке, я добавляю _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)

Ответы [ 3 ]

14 голосов
/ 05 марта 2011

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

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

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

3 голосов
/ 18 мая 2015

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

<%= link_to [:edit,@section,@topic,@reply] %>
0 голосов
/ 26 апреля 2014

Мне кажется, правильный порядок должен быть:

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