2017-07-10 1 views
0

Ich versuche, ein Formular zu machen, dass Sie nur einmal zugreifen können, bevor ein bestimmter Boolescher Wert auf True festgelegt ist, und mit Ihnen einige andere Informationen eingeben, das Problem ist, dass ich nicht weiß Wie man es richtig einrichtet, lädt das Formular bis jetzt kein Problem, aber es aktualisiert die Information des Benutzers nicht.Alternate Update-Formular in Rails

mein Hauptproblem ist, dass ich weiß nicht, wie die Routen einzurichten und die Form, da die meisten der Zeit, die ich resources: nur nutzen sie automatisch

hier ist meine Form zu machen:

<%= form_for @user, url: organizer_user_path, method: :put do |f| %> 
. 
. 
. 
<%end%> 

meine Routen, die ich nicht glaube, ist bei allen

richtig setzen
get 'organizer/user', to: "users#organizer_form" 
put 'organizer/user', to: "users#organizer_registration" 

und mein Controller

def organizer_form 
@user = User.find(current_user[:id]) 
end 

def organizer_registration 
    @user = User.find(current_user[:id]) 
    if @user.update_attributes(user_params) 
    redirect_to @user 
    else 
    render 'organizer_form' 
    end 
end 

Ich bin mir sicher, das Problem liegt darin, wie ich meine Routen definieren und wie sie auf das Formular aufgerufen werden, jede Hilfe?

hier sind die params, die eingereicht werden:

--- !ruby/object:ActionController::Parameters 
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess 
    utf8: "✓" 
    _method: put 
    authenticity_token: w9zTUQLK+4kZtbvRCfcYfZgn8ma4xSRdbTMy+fktpoHlGADxHSB6u9QBh3K3zv72V/Ys2b3Q1MiKC0Gr+OqNJw== 
    user: !ruby/object:ActionController::Parameters 
    parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess 
     organizer: 'true' 
     contact_name: Name 
     last_name: Last name 
     contact_email: [email protected] 
     cellphone: '1234567' 
     company: '' 
     office_phone: '' 
     website: '' 
    permitted: false 
    commit: continuar 
    controller: users 
    action: organizer_registration 
permitted: false 

Das ist mein user_params

def user_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation, :organizer, :contact_name, :last_name, :contact_email, :cellphone, :company, :office_phone, :website) 
end 
+0

Können Sie die '' params'', die beim Senden des Formulars generiert wurden, posten? – Pavan

+0

Ich habe die Parameter gepostet, ich habe Probleme, den Unterschied zwischen den Put- und Patch-Methoden zu verstehen. – Bluespheal

+0

Fügen Sie Ihre 'user_params' Methode hinzu – Pavan

Antwort

0

Schließlich die Antwort gefunden! Ich hatte

attr_accessor :organizer, :contact_name, :last_name, :contact_email, :cellphone, :company, :office_phone, :website 

, die irgendwie das Update von passiert, so entfernt, dass die Updates in der Datenbank gespeichert.