0
親のコントローラ&ビュー内のネストされたリソースを更新するにはどうすればよいですか? 親コントローラとビューを介してネストされたリソースを更新しますか?
pry(main)> Duel.last #Duel has_many Duelers
id: 16,
consequence: "test",
reward: "test",
created_at: Wed, 03 Aug 2016 19:01:46 EDT -04:00,
updated_at: Wed, 03 Aug 2016 19:01:46 EDT -04:00>
pry(main)> Dueler.last
id: 26,
user_id: 78,
challenge_id: 175,
created_at: Wed, 03 Aug 2016 19:01:46 EDT -04:00,
updated_at: Wed, 03 Aug 2016 19:01:46 EDT -04:00,
duel_id: 16,
accept: nil>
pry(main)> Dueler.find(25)
id: 25,
user_id: 15,
challenge_id: 192,
created_at: Wed, 03 Aug 2016 19:01:46 EDT -04:00,
updated_at: Wed, 03 Aug 2016 19:01:46 EDT -04:00,
duel_id: 16,
accept: nil>
[15] pry(main)>
ユーザが@dueler
ためsubmit
をクリック
@dueler
は次に1)更新及び2)バック決闘/ショーへリダイレクトすべきです。
class DuelsController < ApplicationController
before_action :set_duel, only: [:show, :edit, :update]
respond_to :html
def show
@dueler = Dueler.find_by(user_id: current_user.id)
respond_with(@duel)
end
def create
@duel = Duel.new(duel_params)
@duel.save
redirect_to duel_request_url(@duel)
end
private
def set_duel
@duel = Duel.find(params[:id])
end
def duel_params
params.require(:duel).permit(:consequence, :reward, duelers_attributes: [:id, :user_id, :challenge_id, :accept])
end
end
duels_controller.rb決闘/
<% @duel.duelers.each do |dueler| %>
<%= dueler.user.name %> <%= dueler.user.last_name %> will <%= dueler.challenge.name %>
<% end %>
The loser(s) will <%= @duel.consequence %><br><br>
If everyone succeeds they will <%= @duel.reward %><br><br>
<%= form_for @dueler, :url => { :controller => "duels", :action => "show" }, :html => {:method => :post} do |f| %>
Accept? <%= f.check_box :accept %>
<%= f.submit %>
<% end %>
を示ししかし、その代わりにsubmit
時に私はエラーを取得:Routing Error No route matches [POST] "/duels/13"
。あなたはdocumentationを見てみる場合は、resources
を作成するためのPOST
ルートを作成します
<%= form_for @dueler, :url => { :controller => "duels", :action => "show" }, :html => {:method => :patch} do |f| %>
:routes.rbをであなたがpatch
にあなたの方法を変更したいresources :duelers resources :duels