it-roy-ru.com

Невозможно преобразовать недопустимые параметры в хеш - Ruby в Rails ошибка приложения

Я даже не знаю, с чего начать ... пытался понять это весь день. Ничего актуального в гугле. Мой ранее хорошо, весь сайт не работает. Любая страница, на которую я захожу, выдает ошибку "невозможно преобразовать недопустимые параметры в хэш"

Лучшая жемчужина ошибок показывает мне:

Переопределить, чтобы предотвратить сброс # причины во время повторного повышения.

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

Я обновил до Rails 5 ранее в тот же день, полностью так же, как и с другими приложениями Rails, и у меня не было никаких проблем - все они используют более или менее те же самые драгоценные камни, что и Что ж. Возможно, я что-то упускаю, но я даже не могу найти ни малейшего понятия о том, что вызвало это. Любая помощь будет потрясающей! Спасибо! Пожалуйста, дайте мне знать, если вам нужно что-нибудь еще.

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'

Соответствующая часть журналов ошибок:

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/[email protected]/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'

Просто чтобы повторить - это не конкретная страница, это происходит повсюду. Обычно я мог следить за контроллером и т.д. И решить проблему, но я полностью потерян на этом.

15
DanRio

После долгих поисков я обнаружил, что это ошибка, вызвавшая ошибку после обновления Rails до 5.1. Использование гем 'canonical-Rails' и использование строки <% = canonical_tag -%> по какой-то причине вызывало эту ошибку. Не могу сказать, почему, но, надеюсь, это поможет всем, кто сталкивается с этим. 

0
DanRio

В Rails 5.1 похоже, что вам нужно разрешить доступ к параметрам, если вы хотите преобразовать объект params в хеш.

Есть два решения AFAIK:

1) В вашем контроллере сделайте это:

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

2) Добавьте это в ваш config/application.rb, чтобы отключить сильные параметры в Rails (обычно не рекомендуется):

config.action_controller.permit_all_parameters = true
39
cmrichards

Отладка может быть проще, если вы понизите версию до 5.0 (<5.1), так как там вы увидите предупреждения об устаревании, а не исключения.

0
Ollie Bennett