问题标签 [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.
ruby-on-rails-3.2 - 将 rails 3.1.10 升级到 3.2.0 时堆栈级别太深
将我的 rails 应用程序从升级3.1.10
到3.2.0
.
rails console
开得很好。而且,我能够在控制台中执行代码。但是,当我rails server
在browser
. 它失败并显示以下错误。
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 ?
任何帮助将不胜感激。
ruby-on-rails - 在 Rails 系统测试中如何设置服务器端口?
每次运行系统测试时,Rails 服务器都会在不同的端口上启动。
有没有办法指定这应该是哪个端口,而不是在每次运行时都改变它?
我想在我的系统测试中测试单击 ActionMailer 消息中的链接。我需要在我的测试环境配置文件中为此指定一个主机,并且我需要一个静态端口号。
javascript - Redux-Saga:Saga 有时在动作调度上不起作用
我正在发送一个动作来上传视频。该操作应该运行传奇,但它没有按预期工作。传奇有时会运行,有时则不会。我不知道saga不会听动作的确切情况。我们拥有控制台日志的第一行handleCompressAndUploadVideo
没有执行。我想每当我重新加载应用程序时它都会工作,但之后的后续视频上传请求有时不会运行传奇,但情况并非总是如此。
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-Cookie
response.headers 中不存在标头,但存在 cookies['name_of_cookie']。我还想问的一个问题是,这些 cookie(ActionDispatch::Cookies) 何时设置标头作为响应?它发生在机架上吗?
要求
- 我们想在 CORS 请求中设置 cookie。
- 我们想为所有来源设置 cookie
已经实施的内容
- 客户端发送请求
withCredentials
- 在响应中
Access-Control-Allow-Credentials: true
并且Access-Control-Allow-Origin: <origin (request.headers['origin'])>
在场 - 由于它是 Rails API 唯一的应用程序,我们在应用程序中包含以下中间件
问题
- 为什么 ActionDispatch::Cookies 不工作但 response.set_cookie 工作?
- ActionDispatch::Cookies 什么时候设置响应头?它发生在
after
Rails 应用程序的任何回调挂钩中,还是发生在机架中?因为直到after_action
在 applicaton_controller 中,标题都不存在。
奇怪的
- 在开发环境和我的本地机器上它可以工作,但不能在生产环境中工作。它是否与
domain
cookie的设置有关?我还在生产中使用安全和 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 协议发送它。我错过了什么?
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?
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 > 篮子中
ruby - 覆盖宝石轨道中的方法/变量
我正在尝试找到一种方法来覆盖 rails gem 中的变量actionpack/http/parameters.rb
。我必须处理ndjson流,而 rails 中间件无法处理ndjson
。它用ActiveSupport::JSON.decode
这是下面代码的来源
尝试解析 ndjson 时出现此错误
我的目标是覆盖解析器以允许它解码 ndjson... 可能使用split(\n)
而不是当前的ActiveSupport::JSON.decode
.
到目前为止,我已经尝试在lib/
文件夹中创建一个文件并使用以下代码,但它似乎没有进行覆盖。我如何在没有猴子补丁的情况下做到这一点
更新:
我尝试的第二种方法:
不幸的是,它一直警告我该常量已经定义。
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
模式时,一切正常。顺便说一句,我使用的一些软件包:
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
正常工作。
完整错误:
react-native - 在 react useReducer 中调度操作后,initialState 重置
在我的应用程序中,我从 useEffect 挂钩内的服务器获取用户数据并设置initialState
. useReducer
当文本输入更改时发生动作调度时,initialState 会重置而不是更新,因此我无法在输入中键入单词。请问有人能解决这个问题吗?我对减速器反应还很陌生。我已附上相关代码。谢谢。
EditProfile.js
垂直名称输入.js
垂直日期输入.js