![](/img/trans.png)
[英]Rails How to pass params from controller to after_save inside model
[英]Save Rails model from controller params?
我尝试过User.create(params),但这说“控制器”和“动作”不是可分配的。 我可以排除这些属性,但是有更简单的方法来编组我需要的属性吗?
一些例子似乎表明我可以使用params [:user],但如果我希望帖子只是用户对象,则params [:user]看起来像是零。
所以我发布了{username:'blah',密码:'blah'},用户名和密码都在params中,但不是params [:user]。
class UsersController < ApplicationController
def create
user = User.create(params[:user])
if user.save
render :json => user, :status => :created
else
logger.error user.errors
render :json => {:status => :error, :errors => user.errors}, :status => :bad_request
end
end
end
在Rails项目中有一个约定,其中表单元素以某种方式命名(使用表单帮助程序自动为您执行此操作):
<input type='text' name='user[username]'>
<input type='text' name='user[username]'>
当它们发布到控制器时,这些转换为params哈希:
params = {
:user => {
:username => 'whatever',
:password => 'somepass'
}
}
由于路由的工作方式,控制器,操作,id(如果适用)或任何自定义路由部分的键值对将添加到此params散列中。
params.merge!({
:controller => 'users',
:action => 'create'
})
如果params[:user]
对你来说是零,则可能需要更改表单以符合约定。
尝试User.create(request.request_parameters)
或User.create(JSON.parse(request.body.read))
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.