Rails:带&&的条件语句和||

时间:2014-08-07 18:46:15

标签: ruby-on-rails ruby ruby-on-rails-3.2

我目前有这个:

<% if h.ab_template.AB_filterParent == 0 && h.status != 'geo_enabled' %>

我想做的是说是否h.ab_template.AB_filterParent == 0 ||零。我该怎么办?

我尝试了这个但是没有用:

    <% if (h.ab_template.AB_filterParent == 0 || nil) && h.status != 'geo_enabled' %>

很想知道我错误输入或错误实施的内容!

干杯

2 个答案:

答案 0 :(得分:1)

如果您确定h.ab_template.AB_filterParent始终是一个数字(可以用引号括起来),那么您可以尝试以下

<% if h.ab_template.AB_filterParent.to_i == 0 && h.status != 'geo_enabled' %>

否则,如果h.ab_template.AB_filterParent有可能是“abc”“0asd”等,那么请尝试:

<% if (h.ab_template.AB_filterParent.nil? || h.ab_template.AB_filterParent == 0) && h.status != 'geo_enabled' %>

答案 1 :(得分:1)

一般来说,零和零并不意味着同样的事情。通过在迁移表中指定默认值零,尝试消除AB_filterParent在您点击此代码之前为零的可能性。我不知道你的模型是如何的,所以我甚至无法展示如何做到这一点。 使用to_i == 0的主要问题是它只有在AB_filterParent为整数或零时才有效。

0.5.to_i == 0
"asdasd".to_i == 0

所以很奇怪。

另一种方法是在动作或其他模型方法中初始化它,甚至是after_create回调。