Я использую программу для регистрации пользователей. Я настраиваю действие create контроллера регистрации, однако всякий раз, когда я пытаюсь создать любого нового пользователя, ему отказывают, и я получаю указанную ошибку. Я знаю, что должен разрешить необходимые параметры, и я делаю это, поэтому я не понимаю, почему я продолжаю получать ошибку. Пыль - это мои испытания до сих пор.ActiveModel :: ForbiddenAttributesError при использовании устройства для регистрации
#user model
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
belongs_to :country
#rest of the code
end
## Custom registeration controller
class RegistrationsController < Devise::RegistrationsController
def create
@user = User.new(params[:user])
if @user.save
sign_in(@user, bypass: true)
redirect_to user_employee_steps_path(@user),
notice: 'A confirmation email was sent to your email, please complete your profile
and confirm your account to start looking for potential employees'
else
render 'new'
end
end
end
#new.html.erb the view for the registration sign up
<h2>Sign up</h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email, autofocus: true %></div>
<div><%= f.label :first_name %><br />
<%= f.text_field :first_name %></div>
<div><%= f.label :last_name %><br />
<%= f.text_field :last_name %></div>
<div><%= f.label :dob, "Birthday" %><br />
<%= f.date_select :dob, start_year: 1900, end_year: Time.now.year - 18 %></div>
<div><%= f.label :country_id, "Country" %><br />
<%= f.select :country_id, Country.order(name: :asc).collect { |country| [country.name, country.id] }, prompt: 'Select your country' %></div>
<div><%= f.label :city %><br />
<%= f.text_field :city %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password, autocomplete: "off" %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation, autocomplete: "off" %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "users/shared/links" %>
#application controller where I permit params for sign up
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
puts '%' * 30
devise_parameter_sanitizer.for(:sign_up) << [:first_name, :last_name, :country_id, :city, :dob]
puts devise_parameter_sanitizer.for(:sign_up)
puts '%' * 30
end
end
Теперь всякий раз, когда я создаю новый пользователь, я получаю указанную ошибку в названии, и результат этого заявления ставит, который публикуемое выглядят следующим образом:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
email
password
password_confirmation
first_name
last_name
country_id
city
dob
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
, что означает, что метод configure_permitted_parameters был вызван правильно, и требуемые параметры должны быть уже там, поэтому я не понимаю, где проблема может быть ?! Я действительно застрял на этом, и любая помощь будет оценена по достоинству.
ли sign_up_params вспомогательный метод доступен из завещанию? Если да, то какие другие помощники доступны (или как я могу узнать о них?). – Thresh
Знак sign_up_params доступен! Вы можете использовать его непосредственно в своем контроллере. – Oxynum
Я пробовал, и он работает спасибо, мой вопрос был в том, как он был доступен? был ли это метод, предоставляемый посредством разработки, и если да, то есть ли дополнительные вспомогательные методы, такие как этот, который предоставляется, и как я могу узнать о них? – Thresh