在Rails中,默认情况下,Controller中的create方法接收具有不同值的HTTP请求。默认情况下,新记录的创建方式如下:
@apo = Apo.new(params[:apo])但是我如何从这个params散列中访问单个值呢?
我想要创建这样的东西:
@apo = Apo.new do |a|
a.name = $someVariable
a.value = $anotherVariable
a.quantity = -> here i want to have one value which is in params[:apo]
end你知道我在找什么吗?尝试了无数种方法,但就是不起作用。
或者,有没有可能在视图中创建第二个params散列,它只保存这一个值?
另外,我不想用JavaScript来做这件事。
非常感谢!
发布于 2012-12-07 05:41:34
params是特殊的,由Rails为每个HTTP请求设置。它是以下形式的散列
{ :object => { :attrib1 => "value1", :attrib2 => "value2" ... }}这样,您就可以使用
params[:foo]和单个属性(字段),如
params[:foo][:bar]通过传递值的散列,可以在一次调用中创建ActiveRecord模型,如您的第一个示例所示。但是,还有许多其他方法可以创建实例。你可以的
def make_apo(some_value, another_value)
apo = Apo.new
apo.name = some_value
apo.value = another_value
end这样的方法将返回Apo的一个实例。
def make_apo(some_value, another_value, quantity, passed_params)
apo = Apo.new
apo.name = some_value
apo.value = another_value
apo.quantity = passed_params[:apo][:quantity]
end但这一切都是一种非常不寻常的方式。所以不要这样做--这更多的是为了解释正在发生的事情,而不是建议你这样做。
https://stackoverflow.com/questions/13752913
复制相似问题