2016-08-01 4 views
0

Ich bin mir sicher, es gibt Leute da draußen, die das getan haben. Ich habe damit angefangen, aber ich habe meine App ein paar Mal zum Absturz gebracht, also habe ich mir gedacht, dass ich einfach dort nachfragen würde, anstatt meine Webapp in die Vergessenheit zu fahren. Ich benutze devise_invitable gem. Er sendet einen Link auf ihre Benutzer gebeten, klicken sie auf den Link, und sie sind zu dieser Ansicht @ app/views gerichtet/ersinnen/invitation.html.erb:Devise_invitable App/Ansichten/devise/invitation.html.erb 'Registrierung' Felder RoR

<h2><%= t 'devise.invitations.edit.header' %></h2> 

<%= simple_form_for resource, as: resource_name, url: invitation_path(resource_name), html: { method: :put } do |f| %> 
<%= devise_error_messages! %> 
<%= f.hidden_field :invitation_token %> 

<%= f.input :password %> 
<%= f.input :password_confirmation %> 

<%= f.button :submit, t("devise.invitations.edit.submit_button") %> 
<% end %> 

Ich möchte einige Felder hinzufügen, zum Beispiel

<%= f.input :firstname %> 

Wenn ich das tue, aber es tut in der Ansicht erscheinen, obwohl es nicht ist auf das User-Modell zu speichern. Also dachte ich mir, ich müsste den Controller modifizieren. Das ist, wo ich verwirrt werde, denke ich, weil ich versuche, zwischen den Devise und devise_invitable Readme's hin und her zu floppen. Ich benutze Devise 3.5.6 und Devise_invitable 1.5.5. Ich habe versucht, das Hinzufügen der obige Eingabe in die Form, und die Änderung des applicaiton Controller

before_action :configure_permitted_parameters, if: :devise_controller? 

protected 

def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :firstname 
end 

zu schließen, aber das noch nicht zu meinen Benutzer Modell nicht speichern. Hat jemand einen Rat?

Antwort

1

Sie erlauben params, die RegistrationsControllercreate Aktion weitergeben. Sie können es in der Definition sehen, unter params Sanitizer für ist :sign_up
devise_parameter_sanitizer.for(:sign_up) << :firstname

In Ihrem Fall es :accept_invitation werden müssen, da Sie verwenden devise_invitable und bilden url einreichen ist invitation_path die

devise_parameter_sanitizer.for(:accept_invitation) do |u| 
    u.permit(:firstname) 
end 
zu Devise::InvitationsController#update einreichen

Mehr Details here

+0

Oh, verdammt. Das war einfach. Wäre ich nur durchgeknallt gewesen und hätte den starken Parameter Link vorher geklickt. Danke @ Rahul-Singh – bwatson30