Rails 5.1.1 Ruby 2.4.1rails Unpermited params 5.1.1
Lorsqu'une nouvelle organisation est créée, les informations de contact devrait enregistrer sur la table de contact qui est toutefois pas le cas. Je suis encore relativement nouveau sur les rails et j'ai regardé à travers d'autres posts avec des paramètres forts sans aucune chance. Je pense que j'ai inclus toutes les pièces essentielles pour que cela fonctionne si je ne le fais pas savoir et merci!
sortie de la console de logger.info dans l'action create
13:55:03 rails.1 | User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
13:55:03 rails.1 | Role Load (0.5ms) SELECT `roles`.* FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))
13:55:03 rails.1 | <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"LIdSKBh7x9Dqs1A6gKb0Gn7EecArG6aflOeC4OARShLwfySH+HQ5joN3FUCe6qmJBGn2K/QRize67qhrxczK+w==", "organization"=><ActionController::Parameters {"name"=>"Apple", "label"=>"apl", "proxy_hostname"=>"www.apple.com"} permitted: false>, "contact_attributes"=>{"name"=>"555-555-5555"}, "commit"=>"Create Organization", "controller"=>"organizations", "action"=>"create"} permitted: false>
13:55:03 rails.1 | <ActionController::Parameters {"name"=>"Apple", "label"=>"apl", "proxy_hostname"=>"www.apple.com"} permitted: true>
13:55:03 rails.1 | (0.2ms) BEGIN
13:55:03 rails.1 | Organization Exists (0.4ms) SELECT 1 AS one FROM `organizations` WHERE `organizations`.`label` = BINARY 'apl' LIMIT 1
13:55:03 rails.1 | SQL (0.4ms) INSERT INTO `organizations` (`name`, `label`, `created_at`, `updated_at`, `proxy_hostname`) VALUES ('Apple', 'apl', '2017-06-20 17:55:03', '2017-06-20 17:55:03', 'www.apple.com')
13:55:03 rails.1 | (0.5ms) COMMIT
13:55:03 rails.1 | method=POST path=/organizations format=html controller=OrganizationsController action=create status=302 duration=10.23 view=0.00 db=2.12 location=http://localhost:5000/organizations/apl
13:55:03 rails.1 | User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
13:55:03 rails.1 | Organization Load (0.2ms) SELECT `organizations`.* FROM `organizations` WHERE `organizations`.`label` = 'apl' LIMIT 1
13:55:03 rails.1 | (0.5ms) SELECT COUNT(*) FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)) OR ((roles.name = 'analyst') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))
13:55:03 rails.1 | User Load (0.3ms) SELECT `users`.* FROM `users` INNER JOIN `organization_users` ON `users`.`id` = `organization_users`.`user_id` WHERE `organization_users`.`organization_id` = 25
13:55:03 rails.1 | Sensor Load (0.2ms) SELECT `sensors`.* FROM `sensors` WHERE `sensors`.`organization_id` = '25'
13:55:03 rails.1 | CACHE (0.0ms) SELECT COUNT(*) FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)) OR ((roles.name = 'analyst') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) [["user_id", 1]]
13:55:03 rails.1 | Role Load (0.5ms) SELECT `roles`.* FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))
13:55:03 rails.1 | CACHE Role Load (0.0ms) SELECT `roles`.* FROM `roles` INNER JOIN `users_roles` ON `roles`.`id` = `users_roles`.`role_id` WHERE `users_roles`.`user_id` = 1 AND (((roles.name = 'admin') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL))) [["user_id", 1]]
Modèles
class Organization < ApplicationRecord
belongs_to :contact, optional: true
accepts_nested_attributes_for :contact
end
class Contact < ApplicationRecord
has_one :organization
end
contrôleur
class OrganizationsController < ApplicationController
before_action :set_organization, only: [:show, :edit, :update,
:destroy]
after_action :verify_authorized, except: :index
after_action :verify_policy_scoped, only: :index
def index
@organizations = policy_scope(Organization)
end
def show
authorize @organization
end
def new
@organization = Organization.new(contact: Contact.new)
authorize @organization, :create?
end
def edit
authorize @organization, :update?
end
def create
@organization = Organization.new(organization_params)
authorize @organization
logger.info(params.inspect)
logger.info(organization_params.inspect)
respond_to do |format|
if @organization.save
format.html { redirect_to @organization, notice: 'Organization
was
successfully created.' }
format.json { render :show, status: :created, location:
@organization }
else
format.html { render :new }
format.json { render json: @organization.errors, status:
:unprocessable_entity }
end
end
end
def update
authorize @organization
respond_to do |format|
if @organization.update(organization_params)
format.html { redirect_to @organization, notice: 'Organization
was
successfully updated.' }
format.json { render :show, status: :ok, location:
@organization }
else
format.html { render :edit }
format.json { render json: @organization.errors, status:
:unprocessable_entity }
end
end
end
def destroy
authorize @organization
@organization.destroy
respond_to do |format|
format.html { redirect_to organizations_url, notice:
'Organization
was successfully destroyed.' }
format.json { head :no_content }
end
end
private
def set_organization
@organization = Organization.find_by_label(params[:id])
end
def organization_params
params.require(:organization).permit(:name, :label,
:proxy_hostname,
:contact_id, contact_attributes: [:name, :email, :phone])
end
end
Formulaire
= form_for @organization do |f|
- if @organization.errors.any?
#error_explanation
h2 = "#{pluralize(@organization.errors.count, "error")} prohibited
this organization from being saved:"
ul
- @organization.errors.full_messages.each do |message|
li = message
.field.form-group
= f.label :name, for: :organization_name
= f.text_field :name, class: 'form-control', autofocus: true
.field.form-group
= f.label :label, for: :organization_label
= f.text_field :label, class: 'form-control'
.field.form-group
= f.label :proxy_hostname, for: :organization_proxy_hostname
= f.text_field :proxy_hostname, class: 'form-control'
= fields_for :contact_attributes do |ff|
.field.form-group
= ff.label :Contact_Name, for: :contact_name
= ff.text_field :name, class: 'form-control'
= ff.label :Email, for: :contact_email
= ff.text_field :name, class: 'form-control'
= ff.label :Contact_Phone, for: :contact_phone
= ff.text_field :name, class: 'form-control'
.actions = f.submit class: 'btn btn-outline-primary'
Et est l'erreur, exactement? –
Reformatez l'extrait de paramètres sur plusieurs lignes. C'est illisible. –
@SergioTulentsev selon le logger.info, il permet le nom, l'étiquette et le proxy mais pas les attributs_de_contact. Ou au moins c'est comme ça que j'ai compris ça? – paulkiio