问题标签 [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范围方法的所有可用选项及其用法吗?

我已经厌倦了深入研究每个merge_X_scope方法,试图理解 X 选项的含义。

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 之间有什么区别?

我看到request.env['CONTENT_TYPE']和有两个不同的值request.content_type

Content-Type从一个单独的应用程序中,我向我的 Rails 应用程序发送了一个请求,并已将text/xml.

这是我在 Rails 应用程序中看到的另一端:

request.content_type实际上是action_dispatch.request.content_type

  1. request.env['CONTENT_TYPE']和 和有什么不一样request.content_type
  2. 为什么这两个值不同?
0 投票
1 回答
389 浏览

ruby - Rails:ParameterFilter::compiled_filter 尝试复制符号

我正在使用 rails exception-notifier gem 运行 rails3。当发生异常并且应该发送电子邮件时,我从 ParameterFilter 类中得到一个异常。我在 rails 源代码中发现了问题,但不确定最好的解决方法。

问题出现在 ActionDispatch::Http::ParameterFilter 中。在compiled_filter方法中,第38行出现错误:key = key.dupwhen keyis a symbol,因为symbols are not dupliable。这是来源:

我看到他们只dupvalue它是时才打电话duplicable。如果我将源修补为仅调用dupwhen keyis keyduplicable那么我的问题就会消失。我假设作者将条件设置为 onvalue和 not是有原因的key,所以我很好奇那里是否有人对这段代码有更好的理解。

仅当您将块添加到 application.rb 中的过滤器参数时,才会发生此错误。因此,对于我的原始问题,也许有一种解决方法,不需要在此处使用块。如果您有兴趣,请参阅我同事的问题Rails: Filter sensitive data in JSON parameter from logs

这是一个问题的关键是:action。这来自rails,我不知道是否有任何方法可以强制它成为一个字符串。

我提交了一个 Rails 错误https://rails.lighthouseapp.com/projects/8994/tickets/6557-symbol-duplication-error-in-parameterfilter-compiled_filter并且我准备好了一个补丁,如果添加key.duplicable?到该key.dup行,我寻找有关这是否是正确解决方案的输入。

0 投票
4 回答
2913 浏览

ruby-on-rails - Rails:从日志中过滤 JSON 参数中的敏感数据

我正在运行 Rails 3 并尝试从我们的日志中过滤敏感信息,这些信息是作为 post 参数传递的 JSON blob。例如,用户创建可能需要一个user使用 JSON 对象的字符串值调用的 post 参数。JSON 对象中的键之一是password,我们希望将其从日志中过滤掉。我发现这样做的最好方法是向我们的 filter_params 添加一个块,如下所示:

这会向 filter_params 添加一个块,这会导致另一个问题中描述的错误:Rails: ParameterFilter::compiled_filter try to dup symbol

似乎将块传递给 filter_parameters 是不安全的,所以我想知道是否有另一种方法来解决这个问题。

0 投票
2 回答
1803 浏览

ruby-on-rails - 配置 Rails 应用程序以处理多个子域和多个 cookie

我有一个支持多个域的 Rails 应用程序,每个域可能有多个子域。

访问 mydomain1.com 的用户不会获得与 mydomain2.com 相同的体验(尽管应用程序的基本行为相同)

因此,如果用户登录到 mydomain1.com,则不应再登录到 mydomain2.com

如果用户登录到 france.mydomain1.com,那么它应该登录到 Germany.mydomain1.com

以前,我通过在会话存储配置中设置域来处理此问题:

我正在尝试找出处理多个域的最佳方法?

我试过四处乱窜,ActionDispatch::Callback但从那里无法获得请求。

任何人都可以提出一种在一个应用程序中支持多个 cookie 的好方法吗?

理想情况下,我想为每个subdomain创建一个新的 cookie 。

0 投票
3 回答
851 浏览

cucumber - 测试 Rails 3.1 模型创建时的 ActionDispatch::ClosedError (RSpec/Cucumber)

我正在使用 Ruby on Rails 3.1 (RC1) 创建一个 Web 应用程序。我正在使用Factory GirlRSpecCucumber(与Ca​​pybara )进行测试,但是当我创建新用户(通过 User 模型的创建操作)ActionDispatch::ClosedError时,有时(不是每次)我都会遇到意外的提升。以下是我收到的错误消息:

使用这些创建用户的方式时会引发错误:

  • 使用工厂女孩创作
    • Factory.create( :user )
    • Factory.build( :user ).save
  • 基础创作
    • User.create( { ... } )
    • User.new( { ... } ).save

有趣的是,它们在某些测试中确实有效,但在其他测试中无效,而且似乎不是随机的,尽管我无法弄清楚原因。以下是我的代码的摘录:

users_controller_spec.rb

需要'spec_helper'

但是,以下代码块中未引发错误:

describe 'GET edit' do it 'assigns the requested user as @user' do get :edit, id: user.id # 这不会引发错误 assigns[ :user ].should == user end end

即使我以完全相同的方式创建用户,低于此的任何其他方法都不会引发错误。

任何关于我可能做错的建议将不胜感激!

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 服务。gem 包含一些我想包含在 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 模型中包含一个模块

这适用于第一个请求,但不适用于第二个/第三个/等。由于导轨模型重新加载。我尝试使用ActionDispatch::Callbacks.to_prepareActionDispatch::Callbacks.to_prepare,我使用的是 Rails 3.0.9)

但是当我尝试在第二个/第三个/等上调用我的模块模块中定义的方法时,我不断从用户实例中收到 NoMethod 错误。要求。

我的问题是:有没有办法在初始化程序中可靠地将模块包含到 Rails 模型中而没有任何开发怪异?

更新:不可能

显然,如果没有中间件,这是不可能的。如果您不同意,请在下面添加答案。对于我的用例来说,这不是一个可接受的解决方案,所以我实际上什至没有尝试过。祝你好运。

编辑:更新的调试信息

我正在玩ActionDispatch::Callbacks.to_prepare更多的东西,当我把它放在我的初始化程序中时我发现了一些奇怪的东西:

这在我的控制器中

在第一个请求我得到这个:

在第二个请求我得到这个:

我注意到的第一件事是对 to_prepare 的多次调用,这很奇怪。我注意到的第二件事是在第一个请求(有效)中,直接调用控制器之前和之后的 object_id 是相同的,并且它们不在任何后续调用中。如果有人能阐明为什么会发生这种情况以及如何解决它,将不胜感激。