2017-04-21 28 views
5

Nie wiem nawet, od czego zacząć ... próbowałem to rozgryźć przez cały dzień. Nic istotnego w google. Moja poprzednia dobra, cała strona jest bezużyteczna. Każda strona idę wyrzuca błąd „Nie można przekonwertować parametry niedozwolonej hash”Nie można przekonwertować niedozwolonych parametrów na hash - błąd aplikacji Ruby on Rails

Lepszy błędy gem pokazuje mi:

Zastąp, aby zapobieC#cause zresetowaniu podczas ponownego podbicia.

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

miałem przeniesieni do szyn 5 wcześniej w ciągu dnia, w zupełnie tak samo, jak w przypadku innych aplikacji Rails i nie miałem problemu w ogóle - wszyscy oni używają mniej więcej takie same perełki jak również. Być może czegoś mi brakuje, ale nie mogę nawet znaleźć najmniejszej wskazówki, co to powoduje. Każda pomoc byłaby niesamowita! Dzięki! Daj mi znać, jeśli potrzebujesz czegoś jeszcze.

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' 

odpowiedniej części dzienników błędów:

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' 

Wystarczy powtórzyć - to nie jest strona specyficzny, to się dzieje przez cały czas. Normalnie mógłbym podążać za sterownikiem itp. I rozwiązać problem, ale jestem całkowicie zagubiony w tym.

Odpowiedz

1

Dzięki wielu poszukiwaniom okazało się, że był to klejnot powodujący błąd po aktualizacji Railsów do wersji 5.1. Używanie klejnotu "canonical-rails" i używanie linii <% = canonical_tag -%> z jakiegoś powodu powodowało ten błąd. Nie mogłem ci powiedzieć dlaczego, ale mam nadzieję, że to pomoże każdemu, kto się z tym spotka.

16

W przypadku szyn 5.1 wygląda na to, że musisz zezwolić na dostęp do parametrów, jeśli chcesz przekonwertować obiekt params na skrót.

Istnieją dwa rozwiązania AFAIK:

1) na kontrolerze to zrobić:

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

2) Dodaj to do swojej config/environment.rb wyłączyć silne parametrów w szynach (zwykle nie zaleca):

config.action_controller.permit_all_parameters = true 
+0

Dzięki za odpowiedź. Zdecydowanie nie chciałem wyłączać silnych parametrów, jak mówisz, nie jest to najlepszy pomysł. Odkąd znalazłem przyczynę problemu, zobacz moją odpowiedź. – DanRio

+1

Mam tendencję do używania wzorca obiektu formularza, więc nie potrzebuję silnych parametrów – cmrichards

0

Łatwiej będzie przeprowadzić debugowanie, jeśli nastąpi przejście do wersji 5.0 (< 5.1), ponieważ pojawią się ostrzeżenia o wycofaniu, a nie wyjątki.