新手 rails 写项目时候遇到一个问题,例如 QQ 那种模式的 web 应用。这里有三个模型,用户(User) , 群组 (Gropu),加入群组的申请 (GroupApplication)。申请的时候管理员可以决定通过(agree) ,拒绝 (reject)。那么这个 agree 和 reject 方法怎么写啊,在 rails 怎么路由? 默认有如下路由 由于这种问题,不知道怎么去 google,所以请大大指教!
resources :group_application do member do put :agree put :reject end end
接楼上的,不过个人建议把agree和reject放到namespace :admin下 具体怎么去写,楼主参考这里吧
agree
reject
namespace :admin
#1 楼 @rei 按照这种写法路由是这样的 它路由到了 group_application,目前我没有这个 controller 啊。 我现在是把 agree 和 reject 的方法写在了 applications 的 controller 里面。于是我试着修改成
resources :groups do resources :applications end resources :applications do member do put :agree put :reject end end
GroupApplication 目前都是显示在 group show 的页面中。于是_application.html.erb
<div class="panel panel-default"> <div class="panel-heading"> <%= @group.name%> </div> <div class="panel-body"> <%= application.content %> </div> <div class="panel-footer"> <%= current_user.email %></div> <%= form_for agree_application_path do |f| %> <%= f.submit 'Submit', :disable_with => 'Submiting...' , class:"btn btn-primary" %> <% end %> </div>
但是一旦点击 submit 之后就会报错 No route matches [POST] "/groups/1"
No route matches [POST] "/groups/1"
请问应该怎么处理?
resources :groups do resources :applications do member do put :agree put :reject end end end
你需要用的是 嵌套路由,应该用 4 楼写法,但你的 form_for 用法不对,应该是:
<%= form_for [@group, @application] do |f| %>
#4 楼 @rei 非常感谢大大,借着大大的指引,回头仔细看了一遍渲染和路由,知道怎么做了
#5 楼 @liwei78 非常感谢,重新看了一遍 form_for 的文档,较之前明白了些