У меня есть страница Ruby on Rails для редактирования профиля пользователя. Форма отображает имя пользователя и адрес электронной почты правильно. Когда я изменяю имя в текстовом поле и нажимаю кнопку «Обновить», я снова оказываюсь на странице edit_profile с сообщением «Профиль успешно обновлен». Проблема в том, что значение, которое я изменил, не сохранялось в базе данных.
Нет ошибок и параметры в выводе сервера выглядят корректно.
Обработка UsersController # update (для
127.0.0.1 в 2009-05-19 22:00:48) [PUT] Параметры:
{"user" => {"name" => "новое имя",
"Электронная почта" => "test@test.com"},
"Совершить" => "Обновить",
"action" => "update", "_method" => "put",
"Authenticity_token" => "59c79fa90aaf5558aaab8cddef6acb7a4c7c55c3",
"id" => "1", "controller" => "users"}
Чего мне не хватает?
edit_profile.html.erb
<% form_for @profile, :url => {:action => "update", :id => @profile} do |f| %>
<%= f.error_messages %>
<p>Name: <%= f.text_field :name %></p>
<p>Email: <%= f.text_field :email %></p>
<%= f.submit "Update" %>
<% end %>
users_controller.rb
def edit_profile
@profile = User.find(current_user.id)
end
def update
@profile = User.find(params[:id])
respond_to do |format|
if @profile.update_attributes(params[:profile])
flash[:notice] = 'Profile was successfully updated.'
format.html { render :action => 'edit_profile' }
else
flash[:notice] = 'Profile Error.'
format.html { render :action => "edit_profile" }
end
end
end
EDIT:
Да, это была проблема с именами, чтобы исправить это, я изменил ...
if @profile.update_attributes(params[:profile])
до
if @profile.update_attributes(params[:user])