2

シンプルなフォームを使用して、Rails 4 のリモート フォームに問題があります。AJAXなしで使用すると完全に機能しますが、リモートを真のレールに設定するとすぐに、ActionDispatch::ParamsParser::ParseErrorことわざがスローされますunexpected token at 'utf8=%E2%9C%93&...'

何がこれを引き起こしているのか、私には手がかりがありませんが、私だけがそれを持っているように見えるので、おそらく本当に愚かなことです:)

これは私が使用しているフォームタグです:

<%= simple_form_for @profile, remote: true, defaults: { wrapper_html: {:class => 'form-group'}, input_html: { :class => 'form-control' } } do |f| %>

そして、これはレールが私に返すトレースです:

actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:53:in `rescue in parse_formatted_parameters'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:32:in `parse_formatted_parameters'
actionpack (4.0.0) lib/action_dispatch/middleware/params_parser.rb:23:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/flash.rb:241:in `call'
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/cookies.rb:486:in `call'
activerecord (4.0.0) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
activerecord (4.0.0) lib/active_record/migration.rb:369:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__732810880914274126__call__callbacks'
activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
rack (1.5.2) lib/rack/runtime.rb:17:in `call'
activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
railties (4.0.0) lib/rails/engine.rb:511:in `call'
railties (4.0.0) lib/rails/application.rb:97:in `call'
rack (1.5.2) lib/rack/lock.rb:17:in `call'
rack (1.5.2) lib/rack/content_length.rb:14:in `call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
webrick (1.3.1) lib/webrick/httpserver.rb:138:in `service'
webrick (1.3.1) lib/webrick/httpserver.rb:94:in `run'
webrick (1.3.1) lib/webrick/server.rb:191:in `block in start_thread'

ご助力ありがとうございます!

4

2 に答える 2

6

多くはないかもしれませんが、偶然私と同じ問題に遭遇したすべての人のために、私は最終的に解決策を見つけました: 私のコードベースのどこかで、誰かが jQuery Ajax リクエストのグローバル設定を設定し、コンテンツ タイプを JSON に設定しました。Rails は jQuery Ajax ヘルパーを使用しますが、リモート フォームに JSON (通常のクエリ文字列) を使用していないため、Rails パーサーはもちろん不正な形式の JSON を検出し、エラーをスローしました。これらのグローバル設定を削除すると、問題が解決しました。

于 2013-11-26T11:40:53.097 に答える
4

TL,DR 削除するだけです contentType: "application/json"

于 2016-10-08T07:03:49.087 に答える