問題タブ [actiondispatch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
508 参照

ruby-on-rails - Rails 3 ActionDispatch スコープ オプション

ActionDispatchスコープメソッドで使用可能なすべてのオプションとその使用法を文書化したリソースを知っていますか?

X オプションの意味を理解しようとして、各merge_X_scopeメソッドを掘り下げるのにうんざりしています。

0 投票する
1 に答える
266 参照

ruby-on-rails - Rails3 ルートの :new アクションのスコープを :member に変更します

/entries/slug-here/new を一致させて EntriesController#new に送信する必要があります

次の方法を試してみましたが、どちらもうまくいきませんでした:(

一致するものがたくさんある一時的なハードコードされたパスですが、見栄えが悪いです >.<

更新しました:

create メソッドやその他の標準的なアクションと同じです -- それらを再定義できませんでした。

0 投票する
1 に答える
929 参照

ruby-on-rails - request.env['CONTENT_TYPE'] と request.content_type に違いがあるのはなぜですか?

と の 2 つの異なる値が表示されrequest.env['CONTENT_TYPE']ますrequest.content_type

別のアプリケーションから Rails アプリケーションにリクエストを送信し、明示的に を に設定しContent-Typeましたtext/xml

Railsアプリケーション内から、反対側で見ているのは次のとおりです。

request.content_type実際にはaction_dispatch.request.content_type

  1. request.env['CONTENT_TYPE']とはどう違いrequest.content_typeますか?
  2. これら 2 つの値が異なるのはなぜですか?
0 投票する
1 に答える
389 参照

ruby - Rails: ParameterFilter::compiled_filter がシンボルを複製しようとしています

rails exception-notifier gem で rails3 を実行しています。例外が発生し、電子メールを送信する必要がある場合、ParameterFilter クラスから例外が発生します。Rails のソースに問題が見つかりましたが、最善の方法がわかりません。

問題は ActionDispatch::Http::ParameterFilter で発生します。コンパイルされた_filter メソッドでは、38 行目でエラーが発生します: key = key.dupwhenkeyはシンボルです。シンボルは複製できないためです。ソースは次のとおりです。

の場合にのみ呼び出さdupれるvalueようですduplicable。isの場合にのみ呼び出すようdupにソースにパッチを適用すると、問題は解決します。作者がその条件をではなくにした理由があると思いますので、誰かがこのコードをよりよく理解しているかどうか知りたいです。keykeyduplicablevaluekey

このエラーは、application.rb のフィルタ パラメータにブロックを追加した場合にのみ発生します。したがって、ここでブロックを使用する必要のない、元の問題の回避策があるかもしれません。興味がある場合は、同僚の質問Rails: Filtersensitive data in JSON parameter from logsを参照してください。

これが問題となるキーは:action. これはレールからのものであり、代わりに強制的に文字列にする方法があるかどうかはわかりません。

Rails のバグhttps://rails.lighthouseapp.com/projects/8994/tickets/6557-symbol-duplication-error-in-parameterfilter-compiled_filterを提出し、次の行にifkey.duplicable?を追加するパッチを用意しました。key.dupそれが正しい解決策であるかどうかについての情報を探しています。

0 投票する
4 に答える
2913 参照

ruby-on-rails - Rails: ログから JSON パラメーターの機密データをフィルター処理する

Rails 3 を実行していて、ポスト パラメータとして渡される JSON BLOB である機密情報をログから除外しようとしています。たとえば、ユーザーの作成userでは、JSON オブジェクトである文字列値で呼び出される post パラメーターを取る場合があります。JSON オブジェクトのキーの 1 つは であり、passwordこれをログから除外したいと考えています。これを行うための最良の方法は、filter_params に次のようにブロックを追加することでした。

これにより、filter_params にブロックが追加され、別の質問で説明されているエラーが発生します: Rails: ParameterFilter::compiled_filter attempts to dup symbol

ブロックを filter_parameters に渡すのは安全ではないようです。この問題を解決する別の方法があるかどうか疑問に思っています。

0 投票する
2 に答える
1803 参照

ruby-on-rails - 複数のサブドメインと複数の Cookie を処理するように Rails アプリを構成する

複数のドメインをサポートする Rails アプリがあり、各ドメインには複数のサブドメインがある場合があります。

mydomain1.com にアクセスするユーザーは、mydomain2.com と同じエクスペリエンスを受け取りません (ただし、アプリの基本的な動作は同じです)。

したがって、ユーザーが mydomain1.com にログインしている場合、mydomain2.com にログインするべきではありません。

ユーザーが france.mydomain1.com にログインしている場合は、germany.mydomain1.com にログインする必要があります。

以前は、セッション ストア構成でドメインを設定することでこれを処理していました。

複数のドメインでこれを処理する最善の方法を見つけようとしていますか?

ハッキングしてみましActionDispatch::Callbackたが、そこからリクエストを利用できません。

1 つのアプリ内から複数の Cookie をサポートする良い方法を提案できる人はいますか?

理想的には、サブドメインごとに新しい Cookie を作成したいと思います。

0 投票する
3 に答える
851 参照

cucumber - ActionDispatch::ClosedError when testing Rails 3.1 model creation (RSpec/Cucumber)

I am creating a web application with Ruby on Rails 3.1 (RC1). I am using Factory Girl, RSpec and Cucumber (with Capybara) for testing, but I am experiencing unexpected raised ActionDispatch::ClosedErrors some of the times (not every time) when I am creating new users (through the User model's create action). Below is the error message that I get:

The error is raised when using these ways of creating users:

  • Creation using Factory Girl
    • Factory.create( :user )
    • Factory.build( :user ).save
  • Basic creation
    • User.create( { ... } )
    • User.new( { ... } ).save

What is funny is that they do work during some test, but not in others, and it does not seem random, although I cannot figure out the reason. Below is an excerpt from my code:

users_controller_spec.rb

require 'spec_helper'

However, the error is not raised in the following code block:

describe 'GET edit' do it 'assigns the requested user as @user' do get :edit, id: user.id # This raises no error assigns[ :user ].should == user end end

Any other method below this does not raise the error, even though I am creating users in the exact same way.

Any suggestions to what I might be doing wrong would be greatly appreciated!

0 投票する
2 に答える
2041 参照

ruby-on-rails - ActionDispatch::Routing::RouteSetをどのように使用しますか?

ActionDispatch::Routing::RouteSetをどのように使用しますか?

ビューの現在のパスを取得したい。

試してみ<div id="<%= ActionDispatch::Routing::RouteSet::recognize_path %>">ましたが、「ActionDispatch::Routing::RouteSet:Class の未定義メソッド `recognize_path'」が表示されました。

ありがとう!

0 投票する
1 に答える
281 参照

ruby-on-rails-3 - Sinatra で gem から静的コンテンツを提供する方法 (Rails ::ActionDispatch::Static に類似)

gem を含む Sinatra サービスがあります。この宝石には、Sinatra アプリに含めて提供したいいくつかの静的コンテンツが含まれています。

Rails では、これは ActionDispatch で行われます。以下に例を示します: http://jonswope.com/2010/07/25/rails-3-engines-plugins-and-static-assets/

ActionDispatch なしで Sinatra でこれを行う方法はありますか? または、Sinatra で ActionDispatch を介してそれを行うクリーンな方法はありますか?

0 投票する
1 に答える
2367 参照

ruby-on-rails - モジュールを Rails イニシャライザの ruby​​ クラスにインクルードする

Railsの初期化子の内部で、モジュールをRailsモデルに含めようとしています

これは最初のリクエストでは機能しますが、2 番目、3 番目などでは機能しません。Rails モデルのリロードが原因です。使ってみましたActionDispatch::Callbacks.to_prepare( ActionDispatch::Callbacks.to_prepare、Rails 3.0.9を使用しています)

しかし、2番目/3番目などのモジュールモジュールで定義されたメソッドを呼び出そうとすると、ユーザーインスタンスからNoMethodエラーが発生し続けます。リクエスト。

私の質問は次のとおりです。開発の奇妙さなしに、イニシャライザのRailsモデルにモジュールを確実に含める方法はありますか?

更新: 不可能

どうやらこれはミドルウェアなしでは不可能です。同意しない場合は、下に回答を追加してください。これは私のユースケースでは受け入れられない解決策だったので、実際には試しませんでした。幸運を。

編集:更新されたデバッグ情報

ActionDispatch::Callbacks.to_prepare私はもう少しいじっていましたが、これを初期化子に入れると奇妙なことに気付きました:

そしてこれは私のコントローラーで

最初のリクエストでこれを取得します:

2番目のリクエストで私はこれを取得します:

私が最初に気付いたのは、奇妙な to_prepare への複数の呼び出しです。私が気づいた 2 番目のことは、最初の要求 (これは機能します) で、コントローラーが呼び出される直前と直後の object_id は同じであり、その後の呼び出しには含まれていません。なぜこれが起こっているのか、そしてそれを回避する方法について誰かが光を当てることができれば、それは大歓迎です.