Bla*_*sad 20 ruby-on-rails ruby-on-rails-3
我正在{:name => "hello"}
向我的Rails 3控制器ExampleController 发布一些JSON,如JSON形式.
而不是params
像:
{:name => "hello"}
Run Code Online (Sandbox Code Playgroud)
我越来越:
{:name => "hello", :controller => "example", :action => "index", :example => {:name => "hello"}
Run Code Online (Sandbox Code Playgroud)
(是的,JSON数据出现两次!并添加了动作和控制器)
知道为什么吗?
Rob*_*vis 36
ActionController自动为JSON请求执行此操作,以便您可以轻松地将参数传递到Example.create
或@example.update_attributes
,这意味着客户端不需要为您的模型打包它们 - 它可以只包括name
et.人.在JSON数据的顶层,控制器将处理分组.
@example = Example.create params[:example]
Run Code Online (Sandbox Code Playgroud)
参数包装代码从控制器的名称获取模型的名称,但您可以使用控制器中的wrap_parameters宏来更改它:
wrap_parameters :thing
Run Code Online (Sandbox Code Playgroud)
或者关掉它
wrap_parameters false
Run Code Online (Sandbox Code Playgroud)
在Rails 3.2中,如果您的模型使用attr_accessible
,参数包装功能也将排除任何质量分配无法访问的参数.如果您愿意,还可以使用宏来使此包装功能适用于除JSON之外的其他内容类型.
默认情况下,在新创建的Rails应用程序中,这是使用初始化程序为所有控制器配置的.寻找config/initializers/wrap_parameters.rb
.
归档时间: |
|
查看次数: |
3815 次 |
最近记录: |