问题标签 [actioncontroller]
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 - 如何将路径字符串转换为控制器 + 动作 + 参数?
(我确定我已经看到了这个问题的答案,但是在挖掘了几分钟后找不到它。这应该是一个容易回答的问题......)
动机
在控制台中,您可以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,但问题仍然存在……]
asp.net-mvc - 对象引用未设置为对象错误 MVC3 的实例
我有一个 ajax 帖子,它为我提供了用户在我的表单中输入的值。
在我的数据库中,我有两个正在使用的实体,我首先使用模型。但是,尝试执行此操作时出现“对象引用未设置为对象的实例”错误:
targetCardQuestionAnswer.SelectedQuestion.Id = selectedQuestionViewModel.QuestionID;
这是我的控制器帖子:
我选择的问题视图模型:
我的数据库模型
ruby-on-rails - Object.attribute_changed?不在 Rails 控制器中工作
我正在覆盖设计用户的注册控制器以检查用户是否更改了城市,如果是,则在会话中再次加载 Geokit 对象。
问题是没有这样做。下面的代码没有返回任何内容。如果我删除if resource.city_changed?
它,它适用于所有情况,无论资源是否已更改。
asp.net-mvc - MVC:在相同的 [HTTPOST] 操作方法中编辑和创建
我首先在我的项目中使用 MVC3-Viewmodel 模型。
当用户在 my 中输入一个值,DDL
然后TextArea
单击我的表单按钮时,它基本上会执行一个 ajax url.post 到我的 POST 操作,现在我的 Post Action 方法会创建并保存它。但我想要的是某种类型的检查,例如:
- 第 1 步:如果 SelectQuestion 有任何答案
- 第 2 步:如果答案存在,请更新
- 第 3 步:如果答案不存在,则创建一个新答案并保存。
这就是我的控制器现在的样子:
Comment
并且Grade
也可以为空。
实体的关联如下
任何形式的帮助表示赞赏。
提前致谢!
ruby-on-rails - How do I set a custom ETag value in a Rails controller response?
For one controller (only), I'd like to use an ETag value generated outside of rails caching logic, and manage 304-vs-200 responses myself. It seems that nothing I do to set the ETag header works:
Rails always uses its own version.
I know I could disable caching app-wide, but I don't want that - just want to override it in the responses for one ActionController
subclass.
ruby-on-rails - 在 ActiveAdmin 中创建搜索页面
我正在使用 ActiveAdmin 来部署我的项目。我在开发时遇到了一些问题。我有一些数据库表,例如:“Worker”、“Product”、“Task”。我想创建一个页面来搜索那些有很多情况的表。
我创建了一个简单的页面:
这是_form.html.erb
但我不知道如何从表单中调用控制器?(定义了哪个控制器)以及如何将结果content
从控制器呈现或显示到 Activeadmin 中的“my_page”区域?
任何人都可以帮助我吗?请!
json - Rails 3.2 - ActiveResource - 使用带有 JSON 的 POST/PUT
我一直在看这个一段时间,目前不知所措。我已将问题缩小到与 JSON 相关,并且 JSON 似乎没有以清晰的格式发送。
我们之前使用的是 Rails 3.0.7(我要描述的问题不存在)。我们需要升级 Rails 以利用一些新功能 - 但现在出现了这个问题。在这一点上,我几乎可以肯定这是一个简单的配置或其他东西,但我需要更多的关注它。
我们正在使用 ActiveResource 对象,并且在设置对象的值并保存它(从而进行 PUT)时,我们得到从远程 Web 服务返回的 ab 403:Forbidden。这在 Web 服务层上不是问题。
在创建一个新对象并进行 POST 时,我们得到一个 409:Conflict 返回,因为它试图用默认值更新数据库——这意味着 json 数据没有到达服务——或者不清晰。
我的问题是这在 Rails 3.0.7 中有效,在 3.2.3(或我也尝试过的 3.1.3)中不再有效。我对 JSON 数据以外的建议持开放态度,但我很确定这就是问题所在。
我的 ActiveResource 模型有
我的初始化程序文件之一中有以下内容:
感谢您的任何建议!
更新
我一直在用 curl 进行测试,并通过以下方式使其工作:
我得到了它的工作,但是
似乎必须明确设置 Content-Type 标头,否则会导致 415:Media Unrecognized 错误
如果我在 ActiveResource 对象中设置 Content-Type 标头,我仍然会收到 409:Conflict 错误 - 这让我相信 JSON 仍然没有正确形成。
编辑(再次)
我已经弄清楚 JSON 的问题出在哪里——Rails 将根保留在 JSON 中。因此,而不是将资源作为
它正在发送
但是,我已设置include_root_in_json
为 false - 我在初始化程序文件中以及直接在模型本身中都尝试了这个,并且没有更改。
ruby-on-rails - Rails:提交后表单输入未保存
为什么输入此表格的任何内容都无法保存?
新的.html.erb
requests_controller.rb
request.rb
类请求 < ActiveRecord::Base
这是由我的调试器生成的
ruby-on-rails - 为什么我不能在用户实例方法中使用 root_path?(未定义的局部变量或方法)
我需要为具有电子邮件参数的用户调用方法。它是在 PayPal 中支付的功能,我正在设置返回 url 和取消 url。
这是我的方法,在 user.rb 中:
我得到错误:
为什么我不能使用这种方法?为什么我不能使用 redirect_to ?