8

抱歉,如果在其他地方问过这个问题,但我无法弄清楚。我有一个包含部分、主题和回复的论坛。我正在尝试从显示主题视图中编辑和删除回复。这是结构:

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

所以我做了一个 rake routes 来查看我在哪里链接我的编辑回复。我看到它的 edit_section_topic_reply 并在我的 link_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">}

似乎它没有传递 ID,但是之前的巢,我的新主题工作正常

new_section_topic_reply_path(@topic, @section)
4

3 回答 3

14

link_to我真的不喜欢助手的这个方面。为了使您的代码更具可读性且不易出错,我建议您明确说明要传入的 ID。

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

由于参数在link_to.

于 2011-03-05T00:10:42.960 回答
3

编辑链接的另一种方法

<%= link_to [:edit,@section,@topic,@reply] %>
于 2015-05-18T11:52:38.107 回答
0

我认为正确的顺序应该是:

<%= link_to 'Edit', edit_section_topic_reply_path(@section, @topic, @reply) %>
于 2014-04-26T15:38:28.807 回答