从params散列访问值的简写

时间:2011-08-09 12:47:14

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-plugins

我经常觉得需要从'params'哈希中访问各个键值对,就好像它们是局部变量一样。

我发现每次使用局部变量而不是写'params',使我的代码更容易理解。

因此,我不会使用params[:first_variable]这样的值,而是使用类似的内容:

first_var  = params[:first_variable]

second_var = params[:second_variable]
... 

在我的程序中,我会使用这种简短的符号,而不是每次都写params[:first_var]

这个问题是当我在params中有很多值时,我的函数的大小会显着增加。

有没有更好的方法从'params'中引用对象作为我函数中的局部变量?

1 个答案:

答案 0 :(得分:2)

可以重新定义您想要此功能的类method_missing。如果你这样做,请记住method_missing的基本规则 - 如果你无法处理它,请打电话给它(到super);并行更新respond_to?

也许这样的事情。

class Foo
  def method_missing(name, *args, &block)
    if params.include? name
      params[:name]
    else
      super
    end
  end

  def respond_to?(name)
    if params.include? name
      true
    else
      super
    end
  end
end

请记住,Rails已经大量使用method_missing,因此要么只在自己的类上重新定义它,要么对现有版本进行别名,并在您不处理时调用它而不是super。 / p>