【问题标题】:Rails getting single values from requestRails 从请求中获取单个值
【发布时间】:2012-12-06 21:27:14
【问题描述】:

在 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

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

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

附:我不想使用 JavaScript 来执行此操作...

非常感谢!

【问题讨论】:

    标签: ruby-on-rails-3 params actioncontroller


    【解决方案1】:

    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
    

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

    【讨论】:

    • 哦,这正是我正在寻找的答案......非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多