我有:
<%= 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
中的RoutingErrorNo route matches {:action=>"remove_attendee", :controller=>"events", :event_id=>4, :user_id=>108}
我做错了什么?
答案 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
来填补空白,所以它是在密码抱怨。