我经常觉得需要从'params'哈希中访问各个键值对,就好像它们是局部变量一样。
我发现每次使用局部变量而不是写'params',使我的代码更容易理解。
因此,我不会使用params[:first_variable]
这样的值,而是使用类似的内容:
first_var = params[:first_variable]
second_var = params[:second_variable]
...
在我的程序中,我会使用这种简短的符号,而不是每次都写params[:first_var]
。
这个问题是当我在params中有很多值时,我的函数的大小会显着增加。
有没有更好的方法从'params'中引用对象作为我函数中的局部变量?
答案 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>