Ruby on rails Rails中的条件语句
我正在尝试根据条件显示一些代码。我在一个名为“show_weekly”的表中有一个布尔字段。我尝试的是:如果列==1,则显示第一行,否则显示第二行代码。出于某种原因,它只显示第二行Ruby on rails Rails中的条件语句,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试根据条件显示一些代码。我在一个名为“show_weekly”的表中有一个布尔字段。我尝试的是:如果列==1,则显示第一行,否则显示第二行代码。出于某种原因,它只显示第二行 <% if @listing.show_weekly == 1 %> <%= number_to_currency(@listing.price/4, :unit => "£") %> / week <% else %> <%= number_
<% if @listing.show_weekly == 1 %>
<%= number_to_currency(@listing.price/4, :unit => "£") %> / week
<% else %>
<%= number_to_currency(@listing.price, :unit => "£") %> / month
<% end %>
“£;”)%>/周
“£;”)%>/月
非常感谢您的帮助。谢谢您需要检查它是否等于
true
,而不是1
在ruby中,布尔列的值将是false
或true
,而不是0
或1
。所以你应该:
<% if @listing.show_weekly %>
如果
@listing.show\u weekly
包含布尔值,而不是,只需测试是否为真:
<% if @listing.show_weekly %>
.....
<% else %>
....
<% end %>
.....
....
请注意,您甚至不需要“==true
”。这是因为IF语句只查看是否有一个true
值从它后面的任何表达式返回。如果@listing.show_weekly
包含true
的值,则这就是If语句所提供的全部内容 布尔值存储为1或0,但在从模型返回之前,它总是被解释为true
或false
。这是造成许多混乱的根源
使用访问器方法show_weekly?
会有所帮助,因为方法名称中的问号通常表示它将返回布尔值,或者可以作为布尔值计算的值
如果您具备以下条件,则更易于阅读:
<% if @listing.show_weekly? %>
...
<% else %>
...
<% endif %>
由于在Ruby中只有两个值计算为false,nil
和false
,因此通常情况下,任何不为true的值都是nil。有时,如果未定义布尔列,它可以是true
、false
或nil
,但这是不寻常的,可能会让人绊倒。我建议在模型中添加一个方法
def print_price
@p = this.show_weekly? ? this.price / 4 : this.price
number_to_currency (@p, :unit => "£")
end
def print_price
@p = this.show_weekly? ? this.price / 4 : this.price
number_to_currency (@p, :unit => "£")
end