我的印象是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
答案 0 :(得分:1)
是的,它总是被执行:它是函数的一个参数。
你可以这样做:
<%= link_to_if locker.student, locker.student.try(:fullname), locker.student do %>
<div>more complicated</div>
<% end %>
或者使用包裹if
link_to
避免这些问题的优雅方法是空对象和/或装饰器