我是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
答案 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