条件赋值不适用于可能未定义的变量

时间:2013-06-14 19:58:56

标签: ruby-on-rails ruby partial-views variable-assignment

我在rails视图部分的开头有这个:

<% enabled = true unless defined?(enabled) %>

这是为了处理调用视图未通过enabled本地传递的情况,方法是设置默认值。

enabled未设置为true。

我知道构造enabled ||= true,但我不能在这里使用它,因为传入的值可能是false。这将被true覆盖。

2 个答案:

答案 0 :(得分:1)

这解决了它:

<%
  unless defined?(enabled)
    enabled = true
  end
%>

看起来这是因为ruby解析器的工作原理。

问题中的后缀条件是在赋值代码之后,我认为解析器导致变量以nil值生成,使defined?返回false。

请参阅this ruby forum post

答案 1 :(得分:0)

通过将com.android.support:appcompat-v7:22.1.1与OR运算符defined?组合在一起,可以达到与您最初尝试的类似的效果:

||

示例:

defined?(enabled) || enabled = true