问题标签 [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 - 中间件如何被删除?
rack-timeout 包含在 Gemfile 中,但我们只希望它作为生产中的中间件。因此,在初始化器中,我们有:
在此行之前和之后检查显示从阵列中删除的 rack-timeout。无论如何,请求仍然超时,并且在 gem 中快速“放置”表明它确实是罪魁祸首。
这是因为在调用 delete 之前已经构建了中间件堆栈吗?还是在每个请求中都读取堆栈?如果是这样,可能是什么问题?
ruby-on-rails - Rails,您如何在绝对最低级别访问原始请求数据?
Railsrequest
对象在请求生命周期中最早可用的时间是什么时候?本质上,请求何时首次作为请求对象可用,在哪个对象中?ActionDispatch
?
您可以从 访问请求参数Tester::Application
吗?如果是这样,怎么做?如果没有,那么使用环境呢?该信息何时设置?
ruby-on-rails - 如何使用 Rails 控制特定文件的 max-age?
我让 Rails 为我的静态资产提供服务。他们中的大多数人的名字中都有哈希值,并且有很远的到期日期。但是对于一个文件,我不能在其名称中使用哈希来提供它,因此我需要控制到期日期。
我的 application.rb 中有这个,它适用于所有静态资产:
有没有办法让我只为一个文件设置不同的最大年龄?我知道我可以创建一个新的中间件,ActionDispatch::Static
然后更改某些文件的值(参见这篇文章)......但是这将针对每个请求运行,即使是那些不是静态资产的请求。有没有更优雅的解决方案?
ruby-on-rails-3 - 如何将路径字符串转换为控制器 + 动作 + 参数?
(我确定我已经看到了这个问题的答案,但是在挖掘了几分钟后找不到它。这应该是一个容易回答的问题......)
动机
在控制台中,您可以get
使用路径参数调用该方法,例如:
这会调用ActionDispatch::Integration::RequestHelpers#get
,它将“/posts/321”转换为适当的控制器、动作和参数,例如 {:controller => "posts", :action => "show", :id => "321"}。
但是你不能在控制器测试中这样做。要获得相同的效果,您需要:
这是因为get
方法是由 定义的ActionController::TestCase#get
,它期望动作和参数已经被解析出来。
我可以在手动填写 :controller、:action 和任何参数的地方编写测试,但这似乎是引入错误的好方法。
问题
是否有一种方法可以将字符串(例如 的调用posts_path(321)
)解析为适当的 :controller、:action 和参数,适合传递给ActionController::TestCase#get
?
这将使编写测试更简单,更不容易出错。
[编辑:我意识到您需要 HTTP 动词 ( get
) 以及路径 ( /posts/321
) 来唯一地映射到:controller 和:action,但问题仍然存在……]
ruby - 使用 Rails 转发未经处理的多部分 HTTP 请求
好吧,这有点难以解释,所以请多多包涵……
我有一个 Rails 应用程序,其中包含为 ESRI ArcGIS javascript API 编写的大型 javascript 代码库,用于与存储在 ESRI ArcGIS Server 上的空间数据进行交互。ESRI ArcGIS javascript API 使用通常称为“ArcGIS Server 代理”的东西将请求转发到需要基于令牌的身份验证或太长而无法在 URL 中直接处理的 ArcGIS Server 服务。AGS 代理只需向传递给它的 URL 发出 HTTP 请求,将与原始请求一起传递的任何附加参数转发到 ArcGIS Server 服务,该服务执行实际繁重的工作并以 JSON 响应。有关 AGS 代理的详细信息,请参阅 ArcGIS 资源中心的以下页面。
鉴于 AGS 代理仅由 ESRI 在 ASP.Net、Java 和 PHP 风格中提供,我冒昧地将 AGS 代理编写为 Rails 控制器。我选择采用这种方法是因为 JSAPI 不支持跨域请求,并且出于托管原因,我不想在我的 Rails 应用程序中提供 PHP 或在 JRuby 之上运行我的应用程序。我的 Rails AGS 代理在我目前遇到的所有情况下都可以工作,除了多部分请求,它与附件编辑器功能一起发生,这里说明了。
在尝试使多部分请求工作时,我选择使用 Faraday 向 ArcGIS Server 服务发出 HTTP 请求,因为 Faraday 的简单性和对多部分请求的支持。我尝试执行多部分请求的代码如下:
“agsparams”变量是传递给 ArcGIS Server 的参数散列。
尝试执行此代码时,在发出实际请求的行上出现 Ruby 错误,并出现以下错误,这是我目前遇到的问题:
当我在控制器中转储 params 哈希时,它看起来类似于以下内容:
(我删除了一些括号,以便在 StackOverflow 上显示。)
我不知道在哪里调用了“local_path”方法,因为我没有调用它,但我猜这是某种与我不理解的 ActionDispatch 相关的内置功能。ActionDispatch 中是否有我需要覆盖的方法,如果有,我该怎么做?我有一种预感,当我真的只想将文件输入参数转发到 ArcGIS Server 以便 ArcGIS Server 进行上传时,ActionDispatch 正在尝试上传我指定的文件。我不认为我想使用 Faraday::UploadIO,因为我认为我只需要将参数转发到 ArcGIS Server,但我可能是错的。我从这里去哪里??
作为一些额外的尽职调查,我已经确认我的映射 javascript 可以与其他风格的 AGS 代理一起使用;我还检查了使用 Wireshark 工作的多部分代理请求,并将这些请求与使用我的 Rails AGS 代理发出的请求进行了比较,它们看起来是一致的(标头和参数看起来正确)。我尝试添加附件的数据实际上已正确配置为接受附件。我被困住了,真的可以使用一些帮助。
关于我的环境的一些信息:我的应用程序是在 Ruby 1.9.2 上用 Rails 3.2 编写的(我目前使用 CarrierWave 和 Fog 来处理应用程序其他非映射部分的附件,如果这很重要的话)。我正在尝试通过 ArcGIS JSAPI 2.8/Dojo 1.6 发布到运行 ArcGIS Server 10.1 的服务器。
提前致谢...
ruby-on-rails - 在rails上的身份验证ruby中处理不存在的cookie
我正在尝试在我的 ruby on rails 应用程序中设置用户身份验证。我在 app/controllers/application_controller.rb 中有以下代码。当我尝试在设置之前引用 remember_token cookie 时,代码失败。我该如何解决?尝试使用 cookies.has_key(:remember_token) (见下文)失败,因为 cookies 不是哈希(我认为)。
ruby - rails 访问 ActionDispatch 错误
我正在尝试在保存之前更改此请求的数据
要求
控制器
为什么这段代码会产生这个错误?如果这个错误得到解决,这段代码甚至可以为:picture
散列中的每个数组创建一个新的图像对象吗?
ruby - 只有最后一个参数被传递到对象
我的应用程序应该为表单输入字段中选择的每个图像创建一个图像对象。它——创建动作——迭代:picture
参数,并且对于每个条目,它应该创建一个新的图像对象。但是,它似乎只为输入框中选择的最后一个图像创建一个图像对象。为什么这不能正常运行?
控制器
查看表格
提交时请求参数
我将不胜感激您可以分享的任何帮助!
ruby-on-rails - 什么是 ActionDispatch?
我对基本的 Rails 概念有相当不错的掌握,如 ActiveRecord、路由、迁移等。我很难理解的一件事是 ActionDispatch。我找不到它是什么的简单英语描述(或实际上任何描述)。那是什么?
ruby-on-rails - 如何将哈希转换为请求网址?
我有以下键的哈希
我想使用这个哈希键构建一个完整的请求 url。我尝试使用ActionDispatch::Routing::RouteSet
类,但无法按预期获取 url。
我想建立这样的网址http://localhost:3000/users?search=John
如何获取此请求 url?