Ruby on rails 从params散列访问值的缩写
我经常觉得需要从“params”散列访问单个键值对,就好像它们是局部变量一样 我发现使用局部变量而不是每次都写“params”,使我的代码更容易理解 因此,与使用Ruby on rails 从params散列访问值的缩写,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-plugins,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\u var]
params[:first_variable]
之类的值不同,我将执行以下操作:
first_var = params[:first_variable]
second_var = params[:second_variable]
...
在我的程序中,我会使用这个简短的符号,而不是每次都写params[:first\u var]
这样做的问题是,当params中有许多值时,函数的大小可能会显著增加
是否有更好的方法将“params”中的对象作为局部变量引用到我的函数中?您可以重新定义方法\u missing
在哪个类中需要此功能。如果您这样做了,请记住方法\u missing
的基本规则-如果您无法处理它,请调用pass on(传递给super
);并同时更新响应?
也许是这样的
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\u missing
,所以要么在您自己的类中重新定义它,要么在您不处理时将其别名为现有版本并调用它,而不是super
。您能用一些代码解释一下吗?控制器不应该做任何古怪的工作,通常你只需要得到params散列并将其交给其他人处理,你不应该真的在控制器上定义很多局部变量,如果你这样做,可能意味着你的控制器所做的比它将要做的要多得多。我不认为这会使你的代码更容易理解,而不必向加入你的项目的人充分解释(?)。但这只是一个拙见。+1但可能会很危险,这取决于params的变量名称。不要这样做。我们不是从PHP的register_global中学到了更好的东西吗?