这可能是一个非常简单的问题。我是Rails的新手,刚刚遇到了我的第一个主要障碍。 我有两个控制器,Groups和MembershipRequests。当有人提交MembershipRequest时,该组的管理员可以选择接受或拒绝该请求。在我的MembershipRequests控制器中,我有两个方法:accept和deny。他们都工作,但现在我不确定处理我的路线。
这是我的routes.rb的相关部分:
resources :groups do
member do
get 'members'
resources :membership_requests do
member do
post 'accept'
post 'deny'
end
end
...
end
end
好的,关于我真正的问题:我希望能够在没有额外页面的情况下接受和拒绝请求。我想使用JavaScript在MembershipRequests索引页面上使用一个按钮,管理员可以在该页面上接受或拒绝请求。
这是我接受和拒绝按钮的erb代码:
<%= link_to "Accept", :controller => 'membership_requests', :action => 'accept', :confirm => 'Are you sure?' %>
<%= link_to "Deny", :controller => 'membership_requests', :action => 'deny', :confirm => 'Are you sure?' %>
点击其中一个链接就可以了
No route matches "/groups/1/membership_requests/1/{accept,deny}"
就像我期望的那样。但我不知道如何解决这个问题。谢谢!
答案 0 :(得分:0)
我认为,link_to
也应该有:method => :post
因为你将它映射到自定义(非RESTful)动作(这只是一个假设)和:remote => true
,以告诉rails这个链接使用不引人注目的JS。
This screencast可能有所帮助,或者至少可以给出一个起点。
哦,是的。正如Ryan所说,你最好使用这样的东西:
@requests.each do |request|
link_to "Accept", membership_request_accept_path(request), :confirm => 'Are you sure?', :remote => true
end