rails not gema función example español ejemplos cuál could ruby-on-rails devise ruby-on-rails-5

ruby on rails - not - Rieles 5, Método indefinido `para ''para#<Diseñar en línea devise_parameter_sanitizer.for



devise rails ejemplos (5)

No olvide devise_parameter_sanitizer.permit(:account_update, keys: [:username])

Estoy trabajando con Rails 5

Agregué un nuevo nombre de usuario de campo en el modelo Usuario.

class Users::RegistrationsController < Devise::RegistrationsController before_action :configure_permitted_parameters protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up).push(:username) end end

Durante el registro se muestra error: método indefinido `para ''para # ¿Quiso decir? tenedor

Rastro:

NoMethodError (método indefinido `para ''para # ¿Quiso decir? Fork):

app/controllers/users/registrations_controller.rb:7:in `configure_permitted_parameters'' Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (5.0ms) Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.9ms) Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms) Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (118.1ms)

¿Quien puede ayudar? ¿Cómo resolver este problema?


Si solo cambia el .permit a .permit también funciona. Por ejemplo:

devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit({ roles: [] }, :email, :password, :password_confirmation, :username) }

Funciona tanto en Rails 4.2.x como en Rails 5.0.x


According to the documentation:

La API de sanitizador de parámetros ha cambiado para Devise 4

class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:username]) end end


Creo que se perdió la actualización de cuenta en el método configure_permitted_parameters de su controlador, debe seguir el patrón de diseño. Devise tiene una página de actualización de cuenta. Puede encontrar esto en views / devise / registrations / edit.html.erb, y su código tampoco funcionará en la página de inicio de sesión, aquí especificó la página de inicio de sesión

Para actualizar su tabla de usuario, en el momento en que envíe una actualización en sus usuarios / edición, o si está enviando un nombre de usuario en la página de registro, debe seguir este patrón de diseño, para actualizar la tabla de usuario de la base de datos. Incluso si agregó una nueva columna a la tabla de usuario, deberá agregarla al método configure_permitted_parameters. En su caso, es nombre de usuario, pero también perdió la actualización de cuenta. Básicamente está diciendo que desea actualizar el nombre de usuario o agregar la cadena al campo de nombre de usuario sin seguir el patrón de diseño. Cualquier campo que agregue a la tabla Usuario debe seguir este patrón de Diseño. También puede especificar qué página puede actualizar este nombre de usuario. En mi ejemplo a continuación, estoy usando la página de actualización de diseño. Entonces, como dije, incluso si agregó un nombre de campo personalizado a la tabla Usuarios, debe seguir este patrón. Si tiene otra página donde necesita agregar un nombre de usuario, simplemente haría lo mismo.

class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? protected def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:username]) devise_parameter_sanitizer.permit(:account_update, keys: [:username]) end end

A continuación, asegúrese de que en su user.rb haya validado el nombre de usuario en su modelo de Usuario.

class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable validates :username, presence: true end


class ApplicationController < ActionController::Base before_action :configure_permitted_paramters, if: :devise_controller? protected def configure_permitted_paramters devise_parameter_sanitizer.permit(:sign_up, keys: [:fullname]) devise_parameter_sanitizer.permit(:account_update, keys: [:fullname, :phone_number, :description, :email, :password]) end end