无法找到没有ID的模型

时间:2017-11-28 18:45:50

标签: ruby-on-rails

我知道有很多类似问题的解决方案,但它们似乎都不适用于我。

我正在尝试从控制器 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。这也给了错误。有人可以告诉我如何完成这项工作?

1 个答案:

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