我知道有很多类似问题的解决方案,但它们似乎都不适用于我。
我正在尝试从控制器 admin_reports 调用 cancel_quote 方法。此方法将特定行的状态更新为数字“8”。
admin_reports_controller 中的cancel_quote 方法
def trip_report
#####
####
end
def cancel_quote
@ride_later_request = RideLaterRequest.find(params[:id])
if @ride_later_request
@ride_later_request.update(status: 8)
end
redirect_to trip_report_path
end
trip_report.html.erb
<%= button_to "Cancel", {:controller => :admin_reports, :action => 'cancel_quote'}, :method => :get %>
的routes.rb
resources :admin_reports do
collection do
get :cancel_quote
end
end
我遵循了一些其他解决方案并在视图文件本身中创建了一个@ride_later_request
对象,并尝试对其进行迭代,然后从该对象中获取id。这也给了错误。有人可以告诉我如何完成这项工作?
答案 0 :(得分:1)
好的第一件事 你的路线应该是
的成员member do
get :cancel_quote
end
因为它特定于一个对象,所以最好有成员路径。
然后它将接收id为params,然后运行
rake routes | grep cancel_quote
复制该路径并在按钮路径中使用它
<%= button_to "Cancel", cancel_quote_admin_report_path(current_id)%>
直接尝试直接检查您是否能够这样做然后传递当前ID
<%= button_to "Cancel", cancel_quote_admin_report_path(8)%>
OR
你也可以将id传递给你的收集方法,这不是正确的方法,但在这里。
<%= button_to "Cancel", cancel_quote_admin_reports_path(id: current_id)%>