なぜこれが起こっているのかよくわかりません。おそらくあなたの誰かがそうするでしょう...ここに行きます.
ネストされたリソースを作成しました:
resources :order do
resources :ordered_vehicles
end
アクションを追加しlink_to
てlike を渡したので、ページがうまく読み込まれます。問題は、ボタンを押して選択を送信した後です。彼はパスを からに切り替え、エラーを表示します... 図に進みます。new
order.id
new_order_ordered_vehicle_path(order.id)
http://localhost:3000/order/3/ordered_vehicles/new
http://localhost:3000/order/R076027535/ordered_vehicles
Couldn't find Order with id=R076027535
このメソッドのコントローラーでエラーが発生しています
private
def find_order
@order = Order.find(params[:order_id])
end
ですbefore_filter
。
ファイルは次のようになりnew.html.haml
ます
= form_for [@order, @ordered_vehicle], html: { multipart: true } do |f|
= @order.number
%br= @order.id
= f.fields_for :vehicles do |car|
.... #some fields here
= car.submit "Save your choice"
id
彼が見つけられないのはそれ@order.number
ですが、なぜ切り替えたのかわかりません。
編集:徹底的にするために、コントローラーメソッドを追加します:
def new
@ordered_vehicle = @order.ordered_vehicles.build(params.slice(:order_id, :vehicle_id))
end
def create
binding.pry
@ordered_vehicle = @order.ordered_vehicles.build(params.slice(:order_id, :vehicle_id))
if @ordered_vehicle.save
flash[:notice] = "Save successful."
redirect_to account_path
end
end
POSTリクエスト(これがすべての新しいものであることを願っています):
"action_dispatch.request.formats"=>[text/html]},
@request_method="POST", @filtered_parameters={"utf8"=>"✓", "authenticity_token"=>
"Ar4vy8pqCSpA2ch0qG0qiJXAJUbNALYxm/FbuKbdzCc=", "ordered_vehicle"=>
{"vehicles"=> {"maker_id"=>"", "model_id"=>"", "year"=>"", "body"=>"", "capacity"=>"", "id"=>"1"}},
"commit"=>"Save your choice", "action"=>"create",
"controller"=>"spree/ordered_vehicles", "order_id"=>"R076027535"}, @method="POST",
@fullpath="/order/R076027535/ordered_vehicles">