问题标签 [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 投票
0 回答
33 浏览

ruby-on-rails-3.2 - 将 rails 3.1.10 升级到 3.2.0 时堆栈级别太深

将我的 rails 应用程序从升级3.1.103.2.0.
rails console开得很好。而且,我能够在控制台中执行代码。但是,当我rails serverbrowser. 它失败并显示以下错误。

SystemStackError(堆栈级别太深):actionpack (3.2.21) lib/action_dispatch/middleware/reloader.rb:70

Rendered /home/sarwan/.rvm/gems/ruby-1.9.3-p551@project-name/gems/actionpack-3.2.21/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.8ms)
Rendered /home/sarwan/.rvm/gems/ruby-1.9.3-p551@project-name/gems/actionpack-3.2.21/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.7ms)
Rendered /home/sarwan/.rvm/gems/ruby-1.9.3-p551@project-name/gems/actionpack-3.2.21/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (13.8ms)
缓存读取:http://localhost:3000/favicon.ico ?

任何帮助将不胜感激。

0 投票
1 回答
105 浏览

ruby-on-rails - 在 Rails 系统测试中如何设置服务器端口?

每次运行系统测试时,Rails 服务器都会在不同的端口上启动。

有没有办法指定这应该是哪个端口,而不是在每次运行时都改变它?

我想在我的系统测试中测试单击 ActionMailer 消息中的链接。我需要在我的测试环境配置文件中为此指定一个主机,并且我需要一个静态端口号。

0 投票
1 回答
606 浏览

javascript - Redux-Saga:Saga 有时在动作调度上不起作用

我正在发送一个动作来上传视频。该操作应该运行传奇,但它没有按预期工作。传奇有时会运行,有时则不会。我不知道saga不会听动作的确切情况。我们拥有控制台日志的第一行handleCompressAndUploadVideo没有执行。我想每当我重新加载应用程序时它都会工作,但之后的后续视频上传请求有时不会运行传奇,但情况并非总是如此。

0 投票
1 回答
1420 浏览

ruby-on-rails - ActionDispatch::Cookies 没有在响应中设置 Set-Cookie 标头,但 response.set_cookie 确实

我有一个仅限 Rails 5 API 的应用程序,并希望在响应 JSON 请求时发送 cookie。当我使用 ActionDispatch::Cookies 在请求的响应中设置 cookie 时,它​​不会Set-Cookie在响应中设置标头。虽然response.set_cookie确实有效。

我还测试了after_action在应用程序控制器中制作一个钩子,我看到的是Set-Cookieresponse.headers 中不存在标头,但存在 cookies['name_of_cookie']。我还想问的一个问题是,这些 cookie(ActionDispatch::Cookies) 何时设置标头作为响应?它发生在机架上吗?

要求

  1. 我们想在 CORS 请求中设置 cookie。
  2. 我们想为所有来源设置 cookie

已经实施的内容

  1. 客户端发送请求withCredentials
  2. 在响应中Access-Control-Allow-Credentials: true并且Access-Control-Allow-Origin: <origin (request.headers['origin'])>在场
  3. 由于它是 Rails API 唯一的应用程序,我们在应用程序中包含以下中间件

问题

  1. 为什么 ActionDispatch::Cookies 不工作但 response.set_cookie 工作?
  2. ActionDispatch::Cookies 什么时候设置响应头?它发生在afterRails 应用程序的任何回调挂钩中,还是发生在机架中?因为直到after_action在 applicaton_controller 中,标题都不存在。

奇怪的

  1. 在开发环境和我的本地机器上它可以工作,但不能在生产环境中工作。它是否与domaincookie的设置有关?我还在生产中使用安全和 httponly cookie,但在开发中只使用 httponly。

我在这里想念什么?我花了几天时间寻找问题,但找不到解决方法。任何线索都会非常有帮助。谢谢


编辑 1

我观察到一件事。如果我secure: false在 cookie 中设置,那么它可以在生产中使用,但不能用于secure: true. 另一方面secure: true,在生产中使用 response.set_cookie。

我的 request.protocol 是 HTTP。如果请求协议是 HTTP 并且secure: true配置了选项,ActionDispatch::Cookies 是否可能甚至不设置 cookie。

但我认为secure: true是针对客户端的。就像如果 cookie 是安全的,那么浏览器只会通过 https 协议发送它。我错过了什么?

0 投票
0 回答
245 浏览

ruby-on-rails - Rails CSP 中间件能否支持在同一响应中同时包含 Content-Security-Policy 和 Content-Security-Policy-Report-Only 标头?

我希望在我的应用程序中实现 Content-Security-Policy 并通过向 Content-Security-Policy-Report-Only 标头添加规则来迭代策略,这样我就可以在生产环境中测试新策略的同时保持现有的安全性.

根据W3C CSP2 建议,这是 Content-Security-Policy-Report-Only 标头的预期用途。但是,当尝试配置 Rails 来实现这一点时,您似乎可以让 CSP 处于report only模式或“强制”模式:

Rails.application.config.content_security_policy_report_only = true

我已经尝试查看 Rails 源代码,看看是否有办法实现这一点,但看起来好像是非此即彼的行为:

ActionDispatch::ContentSecurityPolicy::Middleware#Line:40

有没有办法配置 Rails 来处理同一个请求中的两个标头?或者我将不得不手动设置我的标题而不使用 Rails 的内置 DSL?

0 投票
1 回答
733 浏览

javascript - 在 react js 中使用上下文 api 时使用 reducer 的初始状态没有更新

我在反应中使用上下文 API 和钩子是相当新的。我面临一个问题,即在尝试使用 的引用传递动作调度时初始状态未更新useReducer,即使对象已传递给它。代码如下: reducer.js

console.log(action)上面给出的item: {…} ​​ id: "101" ​​ image: "https://images.pexels.com/photos/534/animal-countryside-agriculture-farm.jpg" ​​ price: 11.96 ​​ rating: 5 ​​ title: "dress1" ​​ <prototype>: Object { … } ​ type: "ADD_TO_BASKET" ​ <prototype>: Object { … }结果是对象被传递给reducer,但初始状态没有更新。只有这种情况:ADD_TO_BASKET不工作另一种情况:REMOVE_FORM_BASKET 工作正常。如果有人能帮助我,我将不胜感激。

这是其他文件供参考。 stateProvider.js

产品.js

header.js

在初始状态更新后,header.js中的basket.length可以更新,但它仍然为 0,但是如果我在initialState>basket中硬编码一个对象,那么这个basket.length会得到更新。但是对象没有被添加到InitialState > 篮子中

0 投票
1 回答
174 浏览

ruby - 覆盖宝石轨道中的方法/变量

我正在尝试找到一种方法来覆盖 rails gem 中的变量actionpack/http/parameters.rb。我必须处理ndjson流,而 rails 中间件无法处理ndjson。它用ActiveSupport::JSON.decode

这是下面代码的来源

尝试解析 ndjson 时出现此错误

我的目标是覆盖解析器以允许它解码 ndjson... 可能使用split(\n)而不是当前的ActiveSupport::JSON.decode.

到目前为止,我已经尝试在lib/文件夹中创建一个文件并使用以下代码,但它似乎没有进行覆盖。我如何在没有猴子补丁的情况下做到这一点

更新:

我尝试的第二种方法:

不幸的是,它一直警告我该常量已经定义。

0 投票
2 回答
2623 浏览

ruby - Rails 6.1.1 不会在生产模式下加载 webpacker 创建的 CSS 文件

这是我第一次在这里提问,我希望我能很好地解释我的问题。在我最近的一项任务中,我正在将我们的应用程序升级到 Ruby 和 Rails(Ruby 2.6.6 > 2.7.2,Rails 6.0.3.2。> 6.1.1)在此过程中我遇到了几个问题,升级了一些 gems 和 JS图书馆。该应用程序在development模式下运行良好。但是,当我切换到production模式时,我会运行这些命令来编译和运行服务器。

当我运行该应用程序时,在production模式下它看起来运行正常,但是当我转到localhost:3000它时,它会引发一些500关于 CSS 文件的错误。我看到应用程序的主页是纯 HTML,没有 CSS。

错误中提到的文件存在于该/public文件夹下。在浏览器的页面源中,我也可以看到路径。当我单击页面源上的文件夹路径时,我在浏览器上看到此错误。 An unhandled lowlevel error occurred. The application logs may have details.

当我检查RoR的文档match?时,该方法ActionDispatch::FileHandler不存在,但在6.0.3.2 文档中,它已被弃用,恕不另行通知,也许.?。这不是我故意调用的,它可能是在应用程序在production模式下运行时在 Rails 中的某个地方调用的。

我的 erb 文件中有这些助手。

我试着用

但没有运气:(

我也试过这个

有谁知道如何确保 Rails 正在加载这些文件并且可以在用户端访问?或任何更好的调试建议表示赞赏!提前致谢!

注意:当我切换到development模式时,一切正常。顺便说一句,我使用的一些软件包:

0 投票
1 回答
483 浏览

ruby-on-rails - Rails - 如何在我的方法中访问 ActionDispatch UploadedFile 默认属性?

我是 Rails 新手,正在构建一个简单的银行对账单转换器应用程序。用户选择银行名称,上传对账单,点击“转换”,转换后的文件将自动下载。

如何在控制器中访问 Rails ActionDispatch::::Http::UploadedFile属性,特别是content_type属性?我想通过在我的验证方法中使用该属性来检查正确的文件类型,然后再将文件传递给模型中的进一步处理。

我试过了.content_type[:content_type]但没有奏效,导致NoMethodError即使该方法在控制器中明确定义为私有方法。

这是我当前的应用程序设置:

  • 在网页中,表单将允许用户提交:bank:statement参数。

  • 在 中ConvertersController,使用私有converter_params方法保护参数,从而产生以下完整参数(在服务器日志中捕获):

  • 然后在:create行动中,我将file_check私有方法应用于上传的语句(即converter_params[:statement])以检查文件类型是否正确:
  • 然后在模型中,有私有方法所指csv_check?的方法:pdf_check?file_check

但是,目前我得到了NoMethodError,即使该file_check方法在ConvertersController. 这个错误让我感到困惑,因为其他私有方法如stream_then_delete_statement正常工作。

完整错误:

0 投票
1 回答
30 浏览

react-native - 在 react useReducer 中调度操作后,initialState 重置

在我的应用程序中,我从 useEffect 挂钩内的服务器获取用户数据并设置initialState. useReducer当文本输入更改时发生动作调度时,initialState 会重置而不是更新,因此我无法在输入中键入单词。请问有人能解决这个问题吗?我对减速器反应还很陌生。我已附上相关代码。谢谢。

EditProfile.js

垂直名称输入.js

垂直日期输入.js