我有一个button_to,我想执行PUT Action (关于此资源,只有一件事可以更新-它将被更新为“已确认”,因此没有其他与触发该 Action 相关的表单字段)。

这是我的观点(因为按钮位于属于另一个 Controller 的 View 上,所以明确给出了 Controller ):

<%= button_to "Acknowledged", :controller => 'practice_sessions', :id => @practice_session.id, :method => :put %>

在我的路由文件中,该资源已声明为静态资源:
  resources :practice_sessions

此资源的 Controller 具有create和update操作,并且上面的button_to调用create操作。我希望它调用更新操作。

这是在创建操作触发之前通过日志记录的:
Started POST "/practice_sessions?id=21&method=put" for 127.0.0.1 at 2010-11-17 08:52:46 +0000
  Processing by PracticeSessionsController#create as HTML
  Parameters: {"authenticity_token"=>"1EW0IlI38d0f4wST5azrCEZVZPfih7i0UvCGSF7eqbc=", "id"=>"21", "method"=>"put"}

最佳答案

您的语法略有偏离。 button_to接受三个参数:按钮标题,options哈希和html_options哈希。 :method=>:put需要输入html_options,而路由参数需要输入options。因此,您可以像这样重写:

<%= button_to "Acknowledged", { :controller => 'practice_sessions',
  :id => @practice_session.id},
  :method => :put %>

单击该请求后,应使用PracticeSessionsController#update处理

关于ruby-on-rails - Rails button_to正在调用POST操作,试图调用OUT操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4198405/

10-10 11:01
查看更多