没有路线匹配应该工作的东西

时间:2011-06-09 16:51:38

标签: ruby-on-rails

我有:

<%= button_to 'Remove', remove_attendee_event_path(:event_id => @event.id, :user_id => user.id), :method => :post %>

在一个部分,它工作正常。然后,在同一视图中的另一部分,我尝试复制/粘贴此代码,同时将@ event.id更改为event.id,将user.id更改为current_user.id,但它不起作用。它告诉我在Events#index

中的RoutingError
No route matches {:action=>"remove_attendee", :controller=>"events", :event_id=>4, :user_id=>108}

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这不是你的对象。您正在将nil对象填充到方法中。

检查哪个对象为零:

<%= debug @event %>
<%= debug user #most likely this one %>

需要将局部变量发送到这样的视图:

<%= render :partial => 'somethign' :user => user %>

答案 1 :(得分:0)

我认为问题在于您将:event_id参数传递给路径助手而不是:id。成员操作需要:id属性来指定要使用的成员,在EventsController中它将是一个事件。

在这行代码工作的部分中,rails根据当前请求(必须是其中有事件ID可用的其他成员操作)为您填写:id。您作为参数提供的:event_id被忽略(或者实际上它可能被添加到问号后面的URL的末尾,然后被控制器中的remove_attendee方法忽略。)

但是现在当你在索引视图中尝试相同的行时,它没有:id来填补空白,所以它是在密码抱怨。