0

在 Rails 中,Controller 中的 create 方法默认接收具有不同值的 HTTP 请求。默认情况下,新记录的创建方式如下:

@apo = Apo.new(params[:apo])

但是我怎样才能从这个参数哈希中访问单个值呢?

我想创建这样的东西:

@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

你明白我在找什么吗?尝试了数百万种可能性,但它不起作用。

或者,是否有可能在视图中创建第二个参数哈希,它只保存这个值?

PS我不想使用JavaScript来做这个......

非常感谢!

4

1 回答 1

2

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 的一个实例。在您的情况下,如果您在 中有一些值params,请将上面的内容更改为接受params作为另一个参数,或者在调用时传递特定值。

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

但这都是一种非常不寻常的处理方式。所以不要只是这样做——更多的是解释正在发生的事情,而不是建议你这样做。

于 2012-12-06T21:41:34.447 回答