web-dev-qa-db-fra.com

Impossible de convertir les paramètres non autorisés en hachage - erreur dans l'application Ruby on Rails

Je ne sais même pas par où commencer avec ça… j'ai essayé de le comprendre toute la journée. Rien de pertinent sur google. Mon site auparavant, tout à fait correct, est inutilisable. Toute page sur laquelle je vais renvoie l'erreur "impossible de convertir les paramètres non autorisés en hachage" 

La meilleure gemme erreurs me montre: 

Remplacez pour éviter la réinitialisation de la cause # pendant la relance.

      attr_reader :cause
   def initialize(template)
        super($!.message)
        set_backtrace($!.backtrace)
    @cause = $!
    @template, @sub_templates = template, nil
  end

J'avais déjà effectué la mise à niveau vers Rails 5 plus tôt dans la journée, de la même manière que pour les autres applications Rails, et je n'ai rencontré aucun problème. Ils utilisent tous plus ou moins les mêmes gemmes. Il se peut que je manque quelque chose mais je ne peux même pas trouver le moindre indice de ce qui est la cause de ceci. Toute aide serait incroyable! Merci! S'il vous plaît laissez-moi savoir si vous avez besoin de quelque chose d'autre.

Gemfile:

source 'https://rubygems.org'
Ruby '2.4.1'

gem 'Rails', '>= 5.0.0.rc2', '< 5.1'
gem 'bootstrap-sass', '~> 3.3', '>= 3.3.6'
gem 'sass-Rails', '~> 5.0', '>= 5.0.5'
gem 'therubyracer', '~> 0.12.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-Rails'
gem 'jquery-Rails'
gem 'jbuilder'
gem 'sdoc', '0.4.0', group: :doc
gem 'animate-Rails'
gem 'google-analytics-Rails', '1.1.0'
gem 'font-awesome-Rails'
gem 'high_voltage', '~> 3.0.0'
gem 'sprockets-Rails', require: 'sprockets/railtie'
gem 'simple_form'
gem 'pg', '~> 0.20.0'
gem 'canonical-Rails', github: 'jumph4x/canonical-Rails'
gem 'sitemap_generator'
gem 'fog'
gem 'listen', '~> 3.0'
gem 'devise', '~> 4.2'
gem 'Paperclip'
gem 'aws-sdk', '~> 2.3'
gem 'wicked'
gem 'reform'
gem 'reform-Rails'
gem 'binding_of_caller'
gem 'bootstrap-datepicker-Rails'
gem 'exception_notification'
gem 'jquery-tablesorter'
gem 'friendly_id', '~> 5.1.0'
gem 'will_paginate', '~> 3.1.0'
gem 'sidekiq'
gem 'redis'
gem 'twilio-Ruby'
gem 'phony_Rails'
gem 'social-share-button'
gem 'chosen-Rails'
gem 'respond-js-Rails'

group :development, :test do
  gem 'byebug'
  gem 'better_errors'
  gem 'letter_opener'
  gem 'dotenv-Rails'
  gem 'rspec-Rails'
  gem 'factory_girl_Rails'
end

group :development do
  gem 'spring'
  gem 'web-console'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
  gem 'faker'
  gem 'capybara'
  gem 'guard-rspec'
  gem 'launchy'
end

group :production do
  gem 'Rails_12factor', '~> 0.0.3'
  gem 'puma',           '~> 3.8.2'
  gem 'heroku-deflater'
end

gem 'redactor-Rails', github: 'glyph-fr/redactor-Rails'

Partie pertinente des journaux d'erreurs: 

actionpack (5.1.0.rc2) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.1.0.rc2) lib/action_dispatch/middleware/static.rb:125:in `call'
() Users/luisaczc/.rvm/gems/Ruby-2.4.1@global/gems/rack-        2.0.1/lib/rack/sendfile.rb:111:in `call'
railties (5.1.0.rc2) lib/Rails/engine.rb:522:in `call'
puma (3.8.2) lib/puma/configuration.rb:224:in `call'
puma (3.8.2) lib/puma/server.rb:600:in `handle_request'
puma (3.8.2) lib/puma/server.rb:435:in `process_client'
puma (3.8.2) lib/puma/server.rb:299:in `block in run'
puma (3.8.2) lib/puma/thread_pool.rb:120:in `block in spawn_thread'


ActionView::Template::Error - unable to convert unpermitted parameters to     hash:
actionview (5.1.0.rc2) lib/action_view/template/error.rb:67:in `initialize'
actionview (5.1.0.rc2) lib/action_view/template.rb:321:in `handle_render_error'
actionview (5.1.0.rc2) lib/action_view/template.rb:160:in `rescue in render'
actionview (5.1.0.rc2) lib/action_view/template.rb:155:in `render'
actionview (5.1.0.rc2) lib/action_view/renderer/template_renderer.rb:64:in `render_with_layout'
actionview (5.1.0.rc2) lib/action_view/renderer/template_renderer.rb:50:in `render_template'
actionview (5.1.0.rc2) lib/action_view/renderer/template_renderer.rb:14:in `render'
actionview (5.1.0.rc2) lib/action_view/renderer/renderer.rb:42:in `render_template'
actionview (5.1.0.rc2) lib/action_view/renderer/renderer.rb:23:in `render'
actionview (5.1.0.rc2) lib/action_view/rendering.rb:103:in `_render_template'
actionpack (5.1.0.rc2) lib/action_controller/metal/streaming.rb:217:in `_render_template'
actionview (5.1.0.rc2) lib/action_view/rendering.rb:83:in `render_to_body'
actionpack (5.1.0.rc2) lib/action_controller/metal/rendering.rb:52:in `render_to_body'
actionpack (5.1.0.rc2) lib/action_controller/metal/renderers.rb:141:in `render_to_body'
actionpack (5.1.0.rc2) lib/abstract_controller/rendering.rb:24:in `render'
actionpack (5.1.0.rc2) lib/action_controller/metal/rendering.rb:36:in `render'
actionpack (5.1.0.rc2) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'

Juste pour réitérer - ce n'est pas une page spécifique, cela se produit partout. Normalement, je pourrais suivre un contrôleur, etc. et résoudre le problème, mais je suis complètement perdu à ce sujet.

15
DanRio

Après de nombreuses recherches, j'ai trouvé que c'était un joyau qui causait l'erreur après la mise à jour de Rails vers 5.1. L'utilisation de la gem '' canonical-Rails '' et l'utilisation de la ligne <% = canonical_tag -%> provoquaient cette erreur. Je ne saurais vous dire pourquoi, mais j'espère que cela aidera tout le monde. 

0
DanRio

Dans Rails 5.1, vous devez autoriser l'accès aux paramètres si vous souhaitez convertir l'objet params en un hachage.

Il existe deux solutions, autant que je sache:

1) Dans votre contrôleur, procédez comme suit:

form = Form.new(params[:form].permit!)

2) Ajoutez ceci à votre config/application.rb pour désactiver les paramètres forts dans Rails (généralement déconseillé):

config.action_controller.permit_all_parameters = true
39
cmrichards

Il pourrait être plus facile de déboguer si vous rétrogradez à la version 5.0 (<5.1) car vous y verrez des avertissements de dépréciation plutôt que des exceptions.

0
Ollie Bennett