2016-04-08 3 views
0

Ich bin Rails Neuling. Ich erstelle einen Abschnitt, der vorhandene Benutzerdetails aufruft, und wenn der Benutzer auf Bearbeiten klickt, kann er die Änderungen speichern, die er vorgenommen hat. Die Änderungen spiegeln jedoch nicht wider, sobald der Benutzer sie speichert. Kannst du mir sagen, was ich hier vermisse?Ruby on rails ändert sich nicht nach dem Bearbeiten von Benutzerdetails

Hier ist der html/ruby ​​Form ich verwende:

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

Hier ist die Routen:

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

Hier sind die 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 
+0

Sind Sie einen Fehler bekommen, oder ist der Datensatz nicht aktualisiert werden? –

+0

Ich erhalte keine Fehler, nur die Daten werden nicht geändert – Mona

Antwort

0

Es ist nicht sieht Wie Ihr Formular aktualisiert tatsächlich alles, da Ihre Formularfelder nicht mit Ihrem Modell übereinstimmen. Versuchen Sie vereinfacht das Formular Aktion:

Ansicht

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

Anthony, ich habe ein einzelnes Feld für den Benutzernamen, wie unten: <% = text_field_tag ​​(: inputFieldName, "#{@user.first_name} # {" @ user.last_name} ", {: disabled => true})%> Wie kann ich Ihren Weg dorthin integrieren? – Mona

+0

Es sieht nicht so aus, als würde es die Parameter im Controller einstellen. Sehen Sie in den Protokollen Parameter für den Benutzernamen? –

+0

Ich habe diese in meinem Benutzer-Controller als private Methoden: def patient_profile_params params.tab do | p | p.permit (: first_name) p.permit (: last_name) p.permit (: DATE_OF_BIRTH) p.permit (: diabetes_type) p.permit (: a1c_reading) Ende Ende – Mona