在没有视图的RoR v3中设置路由,只需JavaScript?

时间:2011-06-05 20:31:49

标签: ruby-on-rails ruby model-view-controller routing

这可能是一个非常简单的问题。我是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}" 就像我期望的那样。但我不知道如何解决这个问题。谢谢!

1 个答案:

答案 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