编辑用户详细信息后,Ruby on rails更改未反映

时间:2016-04-08 20:43:47

标签: ruby-on-rails forms

我是Rails新手。我正在创建一个拉动现有用户详细信息的部分,当用户单击编辑时,他可以保存他所做的更改。但是,一旦用户保存更改,这些更改就不会反映出来。你能告诉我我在这里缺少什么吗?

这是我正在使用的html / ruby​​表单:

  <%= form_tag(html: {:id => 'user_profile_form'}, :url => patient_profile_path(@user), :method => :put) do %>
     <%= text_field_tag(:inputFieldName, "#{@user.first_name} #{@user.last_name}", {:disabled => true}) %>
     <%= submit_tag 'Save', :id=> 'saveButton' %>
  <%= end %>

这是路线:

  put :patient_profile, to: 'users#patient_profile'
  post :dashboard, to: 'dashboard#index'

以下是控制器代码:

   def patient_profile
    if params[:user]
      u = params[:user]
      @user.first_name = u[:first_name] unless u[:first_name].nil? || u[:first_name].empty?
      @user.last_name = u[:last_name] unless u[:last_name].nil? || u[:last_name].empty?
      @user.save!
      # index
      render :index
    end
  end

1 个答案:

答案 0 :(得分:0)

由于您的表单字段与您的模型不匹配,因此您的表单实际上不会更新任何内容。尝试简化表单操作:

查看

<%= form_for(@user, html: {:id => 'user_profile_form'}, :url => patient_profile_path(@user), :method => :put) do |f| %>
     <%= f.text_field :first_name %>
     <%= f.text_field :last_name %>
     <%= f.submit "Update User" %>
  <%= end %>

<强>控制器:

  def patient_profile
      # TODO: Handle failed validation
      @user.update_attributes!(params[:user])

      # index
      render :index
    end
  end

  def user_params
    params.require(:user).permit(:first_name, :last_name)
  end