总是评估条件link_to_if名称参数?

时间:2015-10-07 11:59:00

标签: ruby-on-rails link-to

我的印象是link_to_if应该可以正常使用此代码:

<%= link_to_if locker.student, locker.student.fullname, locker.student do %>
  <div>more complicated</div>
<% end %>

我在“fullname”上收到no方法错误。 所以,我的印象是,当学生存在时,将创建链接,否则将呈现块。

然而,似乎总是执行name参数,无论if条件如何,所以当没有学生在锁定器上时它就会中断。 这是真的吗?

如果是(奇怪),我该怎样做这样的事情?我想要的是避免标准的if.else。

THX

1 个答案:

答案 0 :(得分:1)

是的,它总是被执行:它是函数的一个参数。

你可以这样做:

<%= link_to_if locker.student, locker.student.try(:fullname), locker.student do %>
  <div>more complicated</div>
<% end %>

或者使用包裹if

的标准link_to

避免这些问题的优雅方法是空对象和/或装饰器