总是评估条件 link_to_if 名称参数?
Conditional link_to_if name parameter always evaluated?
我的印象是 link_to_if 使用此代码应该没有任何问题:
<%= link_to_if locker.student, locker.student.fullname, locker.student do %>
<div>more complicated</div>
<% end %>
我在 "fullname" 上遇到无方法错误。
所以,我的印象是,当学生存在时,将创建 link,否则将呈现块。
然而,似乎 name 参数总是被执行,无论 if 条件如何,所以当储物柜上没有学生时它就会中断。
这是真的吗?
如果是(奇怪),我该怎么做?我想要的是避免使用标准 if.else.
感谢
是的,它总是被执行:它是函数的一个参数。
你可以这样做:
<%= link_to_if locker.student, locker.student.try(:fullname), locker.student do %>
<div>more complicated</div>
<% end %>
或者使用标准 if
包装 link_to
避免这些问题的优雅方法是空对象 and/or 装饰器
我的印象是 link_to_if 使用此代码应该没有任何问题:
<%= link_to_if locker.student, locker.student.fullname, locker.student do %>
<div>more complicated</div>
<% end %>
我在 "fullname" 上遇到无方法错误。 所以,我的印象是,当学生存在时,将创建 link,否则将呈现块。
然而,似乎 name 参数总是被执行,无论 if 条件如何,所以当储物柜上没有学生时它就会中断。 这是真的吗?
如果是(奇怪),我该怎么做?我想要的是避免使用标准 if.else.
感谢
是的,它总是被执行:它是函数的一个参数。
你可以这样做:
<%= link_to_if locker.student, locker.student.try(:fullname), locker.student do %>
<div>more complicated</div>
<% end %>
或者使用标准 if
包装 link_to
避免这些问题的优雅方法是空对象 and/or 装饰器