我有一个基本的应用程序,我试图根据meeting_id和participant_id(这是meeting_participants中的列)销毁名为meeting_participants的表中的记录。
我已更改了meeting_participants_controller中的destroy操作,接受了meeting_id和participant_id,然后删除了相应的记录。
def destroy
session[:return_to] = request.referer
@meeting_participant = MeetingParticipant.find_by_meeting_id_and_participant_id(params[:meeting_id], params[:participant_id])
@meeting_participant.destroy
redirect_to session[:return_to]
end
我想在视图中使用一个按钮来调用meeting_participants#destroy controller,使用以下代码。
<table>
<% @participants.each do |participant| %>
<tr>
<td><%= participant.name %></dt>
<td>
<% participant.meetings.each do |meeting| %>
<%= meeting.name %>
<%= button_to( "Remove Meeting",
{:controller => "meeting_participants",
:action => "destroy",
:meeting_id => meeting.id,
:participant_id => participant.id },
:method => :delete,
:confirm => "Are you sure?") %>
<br/>
<% end %>
</td>
</tr>
<% end %>
</table>
我认为我已成功将正确的participant_id和meeting_id参数发送到控制器,但我收到“无路由匹配”错误,因为我的meeting_participants#destroy的路由正在期待单个:id参数。耙路线给...
meeting_participant DELETE /meeting_participants/:id(.:format) meeting_participants#destroy
有没有人知道改变我的路线以期望两个新参数而不是id的方法?或者也许有一个更好的方法。我觉得路线很混乱。
感谢。
我的routes.rb文件是......
MyApp::Application.routes.draw do
resources :meeting_participants
resources :participants
resources :meetings
end
答案 0 :(得分:1)
我可能会创建一个处理该请求的路由。也许是这样的:
match '/delete_meeting_participants/meeting/:meeting_id/participant/:participant_id' => 'meeting_participants#delete_meeting_participants', :as => 'delete_meeting_participants'
然后,在您的控制器中,您将拥有一个名为delete_meeting_participants
的动作,该动作在您的销毁动作中具有相同的逻辑。显然,您必须使用新创建的操作的名称更新button_to
。