ruby - form - custom controller activeadmin
ActiveAdmin ForbiddenAttributesError (2)
Lo que está viendo es una característica de seguridad de las versiones más nuevas de Rails. Deberá crear una lista blanca para los atributos que pueden ser actualizados por los parámetros tal como los ingresó el usuario. De lo contrario, deberá establecer cada valor manualmente.
Aquí hay una muestra de ciertos params de lista blanca:
ActiveAdmin.register Post do
permit_params :title, :content, :publisher_id
end
Consulte los documentos de ActiveAdmin sobre el tema: https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
soy nuevo para Ruby on Rails. Estoy usando ActiveAdmin y tengo un problema al crear un administrador de usuario
ActiveModel :: ForbiddenAttributesError en Admin :: AdminUsersController # create ActiveModel :: ForbiddenAttributesError
Solicitud
Parámetros:
{"utf8" => "✓",
"authenticity_token" => "nvV ++ 6GNTdA / nDzw1iJ6Ii84pZPcv2mzg0PK2Cg9Ag0 =",
"admin_user" => {"email" => "[email protected]"},
"commit" => "Crear usuario de administrador"} *
Rieles 4.1.0
activeadmin 1.0.0
rubí 2.1
app / admin / admin_user.rb
ActiveAdmin.register AdminUser do
index do
column :email
column :current_sign_in_at
column :last_sign_in_at
column :sign_in_count
default_actions
end
form do |f|
f.inputs "Admin Details" do
f.input :email
end
f.actions
end
end
app / models / admin_user.rb
class AdminUser < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
after_create { |admin| admin.send_reset_password_instructions }
def password_required?
new_record? ? false : super
end
end
Gemfile
source ''https://rubygems.org''
gem ''rails'', ''4.1.0''
gem ''sqlite3''
gem ''sass-rails'', ''~> 4.0.3''
gem ''uglifier'', ''>= 1.3.0''
gem ''coffee-rails'', ''~> 4.0.0''
gem ''jquery-rails''
gem ''turbolinks''
gem ''jbuilder'', ''~> 2.0''
gem ''activeadmin'', github: ''gregbell/active_admin''
gem ''polyamorous'', github: ''activerecord-hackery/polyamorous''
gem ''ransack'', github: ''activerecord-hackery/ransack''
gem ''formtastic'', github: ''justinfrench/formtastic''
gem ''devise''
gem ''sdoc'', ''~> 0.4.0'', group: :doc
config / environments / development.rb
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# In the development environment your application''s code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don''t have to restart the web server when you make code changes.
config.cache_classes = false
# Do not eager load code on boot.
config.eager_load = false
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don''t care if the mailer can''t send.
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
config.assets.raise_runtime_errors = true
# Raises error for missing translations
# config.action_view.raise_on_missing_translations = true
# Sending emails works
config.action_mailer.default_url_options = { :host => ''localhost:3000'' }
end
Rails 4
usa parámetros potentes, que mueve la lista blanca de atributos del modelo al controlador. Es necesario especificar los atributos que le gustaría guardar en la base de datos. No ha permitido los atributos en su código, por lo que está recibiendo ActiveModel::ForbiddenAttributesError
.
Consulte la documentación de ActiveAdmin: Configuración de parámetros potentes
Puede configurar parámetros potentes de la siguiente manera, utilizando el método permit_params
, que crea un método llamado permit_params
, utilice este método al anular la create
o update
acciones:
ActiveAdmin.register AdminUser do
## ...
permit_params :attr1, :attr2 ## Add this line
end
Reemplazar :attr1
:attr2
, etc. con los nombres de los atributos reales que desea incluir en la lista blanca. Por ejemplo :email