三元运算符:一个参数和不同的方法

时间:2012-08-10 12:20:12

标签: ruby ternary-operator

我使用简单的三元运算符编写了一些代码:

<%= (current_user.is_company?) 
    ? company_path(current_user.character)
    : individual_path(current_user.character) %>

我可以写这个表达式更简单和简洁吗?

2 个答案:

答案 0 :(得分:1)

没有太多简化,但这是我能做的:

send((current_user.is_company? ? :company_path : :individual_path),
     current_user.character)

答案 1 :(得分:0)

我认为你无法简化它,但你可以做的是将代码放在你的控制器中,然后在视图上渲染变量:

@real_path = current_user.is_company? ? 
  company_path(current_user.character) : 
  individual_path(current_user.character)

<%= @real_path %>

我认为这种观点不那么激进了。