简体   繁体   中英

Ruby on rails changes not reflecting after editing user's details

I am Rails newbie. I am creating a section that is pulling existing user's details and when the user click on edit, he can save the changes he has made. However, the changes aren't reflecting once the user saves it. Can you tell me what I am missing in here?

Here's the html/ruby form I am using:

  <%= 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 %>

Here's the routes:

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

Here are the controller codes:

   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

It doesn't look like your form is actually updating anything since your form fields don't match your model. Try simplifying your form action:

View

<%= 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 %>

Controller:

  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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM