проблема сохранения формы рельсов - PullRequest
0 голосов
/ 20 мая 2009

У меня есть страница 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])

1 Ответ

1 голос
/ 20 мая 2009

Имена ваших полей не соответствуют тому, что вы передаете методу update_attributes.

Проверьте имена полей формы (используя firebug), и они будут "name" и т. Д.

Но вы передаете массив с именем "params":

update_attributes(params[:profile])  

Ваши поля формы должны называться «профиль [имя]» для правильной работы.

Если вы заглянете в журнал development.log, вы увидите, что обновление никогда не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...