2013-04-02 159 views
0

我不确定如何在视图IF语句中使用OR。RAILS或if语句

这不起作用:

<% if current_user.employee.emptype.typename == "ADMIN" or "TECH" %> 

谢谢!

回答

2

写这样的事情:

<% if current_user.employee.emptype.typename == "ADMIN" || current_user.employee.emptype.typename == "TECH" %> 

或者更好

<% if ['TECH', 'ADMIN'].include?(current_user.employee.emptype.typename) %> 

小心OR和和关键字,它们不具有相同的优先级运营商比&&||

+0

感谢您的信息! – Reddirt

+0

@Reddirt看到awendt的答案,他遵循一个有用的链接来理解&&和和之间的区别。 – pierallard

0

你可以通过以下两种方式之一来完成我更喜欢第一种方法。

<% if current_user.employee.emptype.typename.in?(["ADMIN", "TECH"]) %> 

......或者......

<% if current_user.employee.emptype.typename == "ADMIN" || current_user.employee.emptype.typename == "TECH" %> 
0

这是行不通的,它有没有关系的观点。在Ruby中,所有字符串在if语句中计算为true

你必须对类型名称检查这两个值,就像这样:

if current_user.employee.emptype.type_name == "ADMIN" || current_user.employee.emptype.type_name == "TECH" 

或检查其是否包含有效类型的数组中:

if ["ADMIN", "TECH"].include?(current_user.employee.emptype.type_name) 

另请参阅this article了在Ruby中比较||or