2017-11-28 17 views
0

私はすでに同様の質問のための多くの解決策があることを知っていますが、それらのどれも私のために働くようです。IDなしモデルを見つけることができません

cancel_quoteコントローラからadmin_reportsを呼び出しようとしています。このメソッドは、特定の行のステータスを数値「8」に更新します。

cancel_quote方法routes.rbを

<%= button_to "Cancel", {:controller => :admin_reports, :action => 'cancel_quote'}, :method => :get %> 

trip_report.html.erb

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 

admin_reports_controllerで

resources :admin_reports do 
    collection do 
     get :cancel_quote 
    end 
    end 

私は他のいくつかの解決方法に従い、ビューファイル自体に@ride_later_requestオブジェクトを作成し、それを反復してそのオブジェクトからIDを取得しようとしました。それはあまりにもエラーを与えた。誰かが私にこれをどうやって教えてくれますか?それはそれが良いメンバーでルートを持っている一つのオブジェクトにそれが特定のよう

member do 
    get :cancel_quote 
end 

状の部​​材である必要があり

答えて

1

まあまず事 あなたのルート。

は、それはあなたがそれを行うことができるしている場合

<%= button_to "Cancel", cancel_quote_admin_report_path(current_id)%> 

直接最初のチェックをお試し、その後

rake routes | grep cancel_quote 

コピーそのパスを実行し、ボタンのパスにそれを使用する、のparamsとしてIDを受信しますまたは、現在のIDを渡さない

<%= button_to "Cancel", cancel_quote_admin_report_path(8)%> 

OR

あなたはコレクションメソッドにもidを渡すことができますが、これは正しい方法ではありませんが、ここではそうです。

<%= button_to "Cancel", cancel_quote_admin_reports_path(id: current_id)%> 
+0

これは動作しているようです。しかし、目的を確認するために私は明示的に 'cancel_quote_admin_report_path(1)'のようなID番号を与えました。それはid 1のオブジェクトのステータスを 'status:8'に更新しました。しかし、どうやってIDを動的に渡す必要がありますか? – user3576036

+0

あなたのフォームでは、更新するparams [:id]または 'RideLaterRequest'のIDを取得する必要があります。デバッガを適用して確認してください。 –

+0

params [:id]の後に ':id = Nil'に必要なキーがありません – user3576036