不幸的是,我在Rails 2.3.18上运行了一个应用程序,并且在控制器中看到了params变量的奇怪行为。有一些应用程序的区域(出于某种原因)将params分配给自己或默认情况下为空的散列。 params = (params || {})
现在,params变量被初始化为请求参数,所以它应该在逻辑表达式中计算为true。但是,在这种情况下,params会被设置为{}。为什么会发生这种情况?Rails中的参数赋值2.3.18
0
A
回答
2
我没有一个Rails 2.3的应用程序玩弄但params
在控制器实际上是方法,但是说params = ...
创建阴影标准params
方法的局部变量。例如,尝试这irb
:
def x
puts 'x is being called'
{ :where_is => 'pancakes house?' }
end
x = x || { }
,你会看到x
是{ }
和x
方法甚至从来没有被调用。上面写着代码:
params = (params || {})
有效地这样做:
params = nil # Declare a local variable and initialize it to nil
params = params || { }
# -------^^^^^^ the local variable above, not the method
但是,如果强制RHS params
是一个方法调用:
params = params() || { }
# -------------^^
那么它应该调用方法,但在作业的LHS中仍然会有本地params
变量。
我想你需要弄清楚为什么代码在做params = params || { }
并重构它,以便它不是必需的。当这些控制器方法实际上不在控制器中时,是否尝试工作?他们是否依赖于老版本的Ruby中边缘情况?那些代码是否通过某人抄袭了他们不明白的博客中的神秘代码而增加了货运风格?
相关问题
- 1. Amazon DynamoDB + Rails 2.3.18
- 2. 将参数赋值给赋值?
- 3. config.ru文件for Rails 2.3.18 app
- 4. 在Nhibernate中为赋值参数赋值的问题
- 5. C#中的方法参数赋值
- 6. 非阻塞赋值参考参数
- 7. 赋值Rails的按钮
- 8. Ruby on Rails - 多参数赋值和attr_accessor和12_hour_time
- 9. 是否可以在Python中使用默认参数值赋值的参数值?
- 10. 两者参数赋值的区别
- 11. LINQ与未赋值的变量参数
- 12. 如何为rails中的update_attributes赋值?
- 13. 对象数组赋值改变参数
- 14. 将函数参数赋值给变量
- 15. Rails划分数组并赋值为
- 16. Pex忽略默认参数赋值
- 17. 默认赋值运算符参数
- 18. 如何将%%参数赋值给变量?
- 19. C#参考数组赋值问题
- 20. 变量与参数范围和赋值
- 21. 参数赋值不起作用?
- 22. numpy中的数组赋值?
- 23. smarty中的数组赋值
- 24. 为什么赋值的值始终是参数的值?
- 25. 函数参数C++中的赋值运算符
- 26. 赋值运算符(=)在函数的参数列表中吗?
- 27. 函数参数列表中的赋值Javascript
- 28. PHP - 在函数参数中赋值 - 好的做法?
- 29. ES6解构对象赋值函数参数的默认值
- 30. 如何为参考赋值?
看起来这确实是发生了什么事情。我不知道这些方法需要明确调用方法。谢谢! – user2977636