Monday 15 August 2011

ruby on rails - Unpermitted parameter for :user when adding Devise custom fields -



ruby on rails - Unpermitted parameter for :user when adding Devise custom fields -

i have 2 types of users: normal users , pros.

pros users, have fields in separate table called :pros.

so , did separate registration form :pros, in included :users fields, , added fields_for new :pro fields.

i added new parameters application_controller, devise permits them.

when submiting registration form, user created, next error in logs:

started post "/users" 127.0.0.1 @ 2014-11-13 00:53:43 +0100 processing registrationscontroller#create html parameters: {"utf8"=>"✓", "authenticity_token"=>"zuvljfhhshohvuvnegnmcf46e4kpwainetw4o7ica7w=", "user"=>{"name"=>"asdasd", "email"=>"asdasd@sss.com", "password"=>"[filtered]", "password_confirmation"=>"[filtered]", "pros"=>{"type"=>"marca de decoración", "web"=>"asadasd", "telephone"=>"765876", "about"=>"sadasd"}, "tos_agreement"=>"1"}, "commit"=>"registrarme y aplicar para pro"} unpermitted parameters: pros

my view is:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) |f| %> <%= f.label :name, "nombre de usuario" %> <%= f.text_field :name, :autofocus => true %> <%= f.label :email %> <%= f.email_field :email %> <%= f.label :password %> <%= f.password_field :password %> <%= f.label :password_confirmation %> <%= f.password_field :password_confirmation %> <%= f.fields_for :pro |pro| %> <%= pro.select :type,["marca de decoración","tienda de decoración","blogger"] %> <%= pro.text_field :web, placeholder: "http://www.miweb.com" %> <%= f.label :telephone, "teléfono" %> <%= pro.text_field :telephone, placeholder: "teléfono", label: "teléfono de contacto" %> <%= pro.text_field :about%> <% end %>

users controller new action

def pro_new render "devise/registrations/new-pro-registration" @user = user.create end

my model relations:

user.rb

has_one :pro accepts_nested_attributes_for :pro, allow_destroy: true

pro.rb

belongs_to :user

my application controller:

def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :tos_agreement, :avatar, :avatar_cache, :email, :password, :password_confirmation, pros_attributes: [:pro_name, :pro_image, :is_active, :web, :user_id, :about, :facebook, :twitter, :linkedin, :telephone]) } end

i agree @smallbutton.com need alter pro_attributes instead of pros_attributes. can utilize params.require(:user).permit! if want take params.

ruby-on-rails devise

No comments:

Post a Comment