首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails从请求中获取单个值

Rails从请求中获取单个值
EN

Stack Overflow用户
提问于 2012-12-07 05:27:14
回答 1查看 5.3K关注 0票数 0

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

代码语言:javascript
复制
@apo = Apo.new(params[:apo])

但是我如何从这个params散列中访问单个值呢?

我想要创建这样的东西:

代码语言:javascript
复制
@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来做这件事。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-07 05:41:34

params是特殊的,由Rails为每个HTTP请求设置。它是以下形式的散列

代码语言:javascript
复制
{ :object => { :attrib1 => "value1", :attrib2 => "value2" ... }}

这样,您就可以使用

代码语言:javascript
复制
params[:foo]

和单个属性(字段),如

代码语言:javascript
复制
params[:foo][:bar]

通过传递值的散列,可以在一次调用中创建ActiveRecord模型,如您的第一个示例所示。但是,还有许多其他方法可以创建实例。你可以的

代码语言:javascript
复制
def make_apo(some_value, another_value)
  apo = Apo.new
  apo.name = some_value
  apo.value = another_value
end

这样的方法将返回Apo的一个实例。

代码语言:javascript
复制
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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13752913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档