2017-09-25 2 views
0

Ich benutze die Devise gem und habe damit ein einfaches User-Modell erstellt. Danach fügte ich ein Feld "phone_number" hinzu und ich möchte in der Lage sein, dieses phone_number Feld in einem anderen Controller zu bearbeiten. Die Art, wie ich festgelegt haben, dass Controllers Form, um die Telefonnummer zu bearbeiten ist wie folgt:rails 5 param fehlt oder der Wert ist leer: phone_number

Dashboard-Controller

class DashboardController < ApplicationController 

    # So that we don't have to authenticate users for only the home action in this controller 
    skip_before_action :authenticate_user!, :only => [:home] 

    def home 
    current_user.update(user_params) 

    respond_to do |format| 
     if current_user.update_attributes(user_params) 
     format.html { redirect_to current_user, notice: 'User was successfully created.' } 
     else 
     format.html { redirect_to current_user, notice: 'Errors.' } 
     end 
    end 

    end 

    private 

    def user_params 
    params.require(:user).permit(:phone_number) 
    end 
end 

Und meine Form ist:

<%= form_for(current_user) do |f| %> 
     <%= devise_error_messages! %> 
     <div class="field"> 
      <%= f.label :phone_number %><br /> 
      <%= f.text_field :phone_number, autofocus: true %> 
     </div> 

<% end %> 

Gerade jetzt, dieses Haus Methode Dieser Controller wird für meine Root-Seite geroutet (sobald Sie also localhost: 3000 drücken, wird auf diesen Home-Controller zugegriffen.)

Leider ist die Seite nicht einmal geladen und der Fehler auf Last Ich erhalte:

Action :: ParameterMissing in DashboardController # Hause

param fehlt oder der Wert leer ist: Benutzer

Wie ich ein Formular einrichten kann in meinem Dashboard-Controller, damit der Benutzer current_user sein Telefonnummernfeld bearbeiten kann? Vielen Dank im Voraus

+0

Bitte die Protokolle veröffentlichen. – Pavan

Antwort

0

Wenn Sie gehen zu localhost:3000 Sie keine params liefert, aber der Controller erwartet params [: user]:

def user_params 
    params.require(:user).permit(:phone_number) 
    end 

Deshalb sollten Sie die Fehler erhalten. Wahrscheinlich möchten Sie Ihre Root nicht zu dieser Aktion routen.

Verwandte Themen