Что-то странное происходит с моим приложением Rails.Когда я пытаюсь отправить команду обновления на один из моих контроллеров, по какой-то причине кнопка отправки, кажется, изменяет некоторые параметры.
Я использую вложенные ресурсы и настраиваю расы, в которых есть участники.Довольно простоПо какой-то причине, однако, когда я пытаюсь обновить участника, он меняет значение: race_id на id участника (: id).
Хотя это происходит только при обновлении.Мне кажется, что я могу отлично создавать новых участников, используя ту же самую форму и, таким образом, ту же самую кнопку отправки.
Вот некоторый соответствующий код:
_form.rb(используется new и update)
<%= form_for ([:race, @participant]) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p><%= f.submit %></p>
<% end %>
members_controller.rb
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 для включения <%= params[:race_id] %>
Экран сообщает мне 3
Когда я нажимаю на кнопку отправить, я получаю:
Не удалось найти Race с id = 25
Запрос
Параметры:
{"utf8" => "✓", "_method" => "put", "authenticity_token" => "4VCZP9sI / iv8n454I8AE76n5vLiwGayuXc1NrPYfG,"member" => {"name" => "hgdjhgf"}, "commit" => "Обновить участника", "race_id" => "25", "id" => "25"}
(Как вы можете видеть в параметрах, "race_id" => "25" после того, как я нажму "отправить", но на странице изначально было: race_id => "3" (доказано выше, и снова, если я что-то сделаю, чтобы сделать формукраш)).
Итак квестИон, после всего этого, почему: race_id изменяется где-то между представлением и контроллером?
EDIT: вот вывод рейковых маршрутов, согласно запросу Джеффа: http://dylancodes.net/personal/ARTk/images/routes.png