ruby-on-rails - Rails 是否创建了新的参数[:model] hash?

标签 ruby-on-rails backbone.js

我想检查我所看到的行为是否确实如我所想。

我已在 Google 上搜索答案,但找不到任何文档来确认这是预期行为。

我正在使用 Backbone 0.9.2.1 和 Rails 3.2.3

当我将模型保存在主干中时,我会查看 HTTP header 并看到它发送 JSON 表示形式,例如

{"title":"I think...","id":2,...}

在 Controller 内部,我一直心不在焉地使用 params[:opinion],奇怪的是它工作得很好,但现在我遇到了麻烦,我注意到我的 params 哈希实际上是

{"title" => "I think...",
"id" => 2
"opinion" => {"title" => "I think ..."},
...

(我遇到问题的原因是 params[:id] 中存在 id,但 params[:opinion][:id] 中不存在 id

在我看来,在调用 Controller 方法之前,任何与 attr_accessible 名称匹配的参数都会映射到此 params[:opinion] 哈希中。

模型当然是意见。 该 Controller 称为opinion_controller,并通过以下路线到达:

  resources :stories, :controller => 'opinions'

(正在重命名一些东西)

这是预期的行为吗? 有人可以向我指出可以阅读此内容的文档吗?

最佳答案

是的,我遇到了同样的事情,并且想知道wtf。 Rails 自动包装它,如您所见。改变: https://github.com/rails/rails/pull/359

编辑: 来自 API 文档: http://api.rubyonrails.org/classes/ActionController/ParamsWrapper.html

默认情况下,如果您不指定参数将被包装到的键,ParamsWrapper 实际上会尝试确定是否存在与其相关的模型。

这个答案也描述得很好: https://stackoverflow.com/a/9134057/341692

关于ruby-on-rails - Rails 是否创建了新的参数[:model] hash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850934/

相关文章:

ruby-on-rails - 根据数据库中定义的字段生成表单

ruby-on-rails - rails3 devise - 没有路由匹配 "/sessions/user"

java - Rails 应用程序,但所有数据层都使用基于 json/xml 的 Web 服务

ruby-on-rails - Rails 3 和设计 : Redirecting to page following signup (confirmable)

javascript - 清除单页应用程序中 View 中的所有项目

ruby-on-rails - Ruby on Rails - 如何管理管理界面中的布局?

javascript - 是否可以为 Backbone 集合中的新模型生成唯一 ID?

javascript - 带有 backbone.js 的 D3-cloud

javascript - Backbone.js:如何在事件发生时识别父 View 的模型?

javascript - 主干 - 未定义的请求正文