私のRailsアプリケーションで何か変わったことが起こっています。私がコントローラの1つに更新コマンドを送信しようとすると、何らかの理由で送信ボタンがいくつかのパラメータを変更しているように見えます。Rails 3 View/Controller:変更パラメータの送信または更新が渡されましたか? ( "New" works)
私はネストされたリソースを使用しており、参加者を持つレースを設定しています。ものすごく単純。しかし何らかの理由で、参加者を更新しようとすると、race_idの値が参加者のid(:id)に変更されます。
更新時にのみ行いますが。非常に同じフォームを使って完全に新しい参加者を作ることができるようですし、非常に同じ送信ボタンです。ここで
は、関連するコードの一部です:なぜそれ
class ParticipantsController < ApplicationController
before_filter :authenticate_user!, :only => [:edit, :update, :destroy, :create, :new]
before_filter :set_up_race
...
def create
@participant = @race.participants.new(params[:participant])
if @participant.save
redirect_to setup_race_path(@race), :notice => "Successfully created participant."
else
render :action => 'new'
end
end
...
def update
@participant = Participant.find(params[:id])
if @participant.update_attributes(params[:participant])
redirect_to setup_race_path(@race), :notice => "Successfully updated participant."
else
render :action => 'edit'
end
end
...
def set_up_race
@race = Race.find(params[:race_id])
end
end
(新規および更新で使用される)_form.rb
<%= form_for ([:race, @participant]) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p><%= f.submit %></p>
<% end %>
participants_controller.rbはここですパラメータが変更されているようです: _form.rb画面が私に伝え<%= params[:race_id] %>
を含めるファイル
私は私が手提出クリック3
:
ID = 25
要求
パラメータと人種が見つかりませんでした:
を "authenticity_token" => "4VCZP9sI/iv8n454I8AE76n5vLiwGayuXc1NrPYfz"{"utf8" => "✓"、 "_method" => "put" 「race_id」=>「25」、「id」=>「25」}、「Gc =」、 「参加者」=> {「名前」=>「hgdjhgf」}「コミット」=>「参加者の更新」
(私が提出をクリックした後にパラメータ「raid_id」=>「25」に表示されているように、ページはもともとrace_id =>「3」(上記で証明済みです。フォームをクラッシュさせる))。
だからこそ、なぜ、race_idがビューとコントローラの間のどこかで変わるのですか?
編集:ここですくいルート出力はジェフの要求ごとのように、です: http://dylancodes.net/personal/ARTk/images/routes.png
アップデートのために "set_up_race"を実行しないで(:のみを使用して他のすべての機能を実行させて)、@race = Race.find(@ participant.race_id)をしかし、それは良い解決策ではありません。さらに、race_idが変更されている理由を説明していません。 – DRobinson
あなたのルートはどのように見えますか? 'レーキルート'の出力を含めることができますか? –
ええ、私はそれを投稿します。しかし、私はすべてのページが正しく読み込まれているように見えます。それは、ビューで保持されているパラメータとコントローラーで保持されているパラメータの間にちょうど不一致があることを意味します(送信ボタンの編集:race_id)。ルート出力は次のとおりです:http://dylancodes.net/personal/ARTk/images/routes.png – DRobinson