rails 3.2,如何为HTTP动词put写路由,并在link_to中使用它?

时间:2012-05-31 18:29:06

标签: ruby-on-rails-3 routes

我正在尝试写两个拒绝和链接的链接批准行动, 但是,我不知道如何写出正确的路线,

我的route.rb

put 'approve_class_room/:id(.:format)', :to => 'class_room_member_ships#approve'
put 'reject_class_room/:id(.:format)', :to => 'class_room_member_ships#reject'

但是,在rake路线中,我得到:

PUT    /approve_class_room/:id(.:format) class_room_member_ships#approve
PUT    /reject_class_room/:id(.:format)  class_room_member_ships#reject

那么,什么是正确的link_to路径?

我的链接是

= link_to 'approve', approve_class_room_path

它不会工作,我得到:

undefined local variable or method `approve_class_room_path'

p.s:我试图让link_to使用AJAX工作,在同一页面上进行批准, 我在正确的路上吗?什么是link_to路径?

请问好吗?

2 个答案:

答案 0 :(得分:6)

首先,要清除错误,您需要使用named routes

put 'approve_class_room/:id(.:format)', :to => 'class_room_member_ships#approve',
                                        :as => :approve_class_room
put 'reject_class_room/:id(.:format)', :to => 'class_room_member_ships#reject',
                                       :as => :reject_class_room

然后,要执行PUT请求,您需要在:method来电中加入link_to选项:

link_to 'approve', approve_class_room_path, :method => :put
link_to 'reject', reject_class_room_path, :method => :put

如果你得到一个404导致GET请求而不是PUT请求,那是因为:method => :put选项依赖于JavaScript。您需要确保jquery-rails已正确集成到您的应用中。

答案 1 :(得分:1)

这可能无法清除该错误,但由于请求是put,您需要在link_to中指定:

= link_to 'approve', approve_class_room_path, :method => :put

对于路线,我认为添加这个会使错误消失:

put 'approve_class_room/:id(.:format)', :to => 'class_room_member_ships#approve', :as => :approve_class_room