您应该避免在视图中使用复杂的条件(和大多数条件)。将它们提取到 Helper,或者更好的是,提取到某种“演示者”,以便您可以使用接收器而不是那些“全局外观/感觉的助手”
一些帮手
module SomeHelper
def work_link
(@ethos.present? && @work) ? link_to("Add Work", work_path) : nil
end
end
看法
<%= work_link %>
<%= @ethos.tagline if @ethos.present? %>
如果@ethos
可能与nil
空[]
数组相反,则可以改用:
<%= @ethos.try :tagline %>
另请注意,在您的原始视图中<%= unless @work.nil? do %>
应该使用 a-
而不是 a =
。
哦,我鼓励你使用HAML而不是 ERB。使用 HAML,视图看起来像这样(更容易阅读,不是吗):
= work_link %>
= @ethos. try :tagline
您的原始视图在 HAML 中看起来像这样(请记住,尽可能避免在视图中使用条件!)
- unless @ethos.blank?
- unless @work.nil? do
= link_to "Add Work", work_path
= @ethos.tagline