如果对象为空,则在视图中有条件地显示元素

时间:2012-04-17 09:41:44

标签: javascript jquery ruby-on-rails css ruby-on-rails-3

以下是我的视图模板的一部分。

%ul.property_list
%li.lastminute
  %span.icon
  %h5 #{house.lastminute}
  %h6 #{house.lastminute_conditions}
 %li.guest
  %span.icon
  %h5 #{house.guests}

有些房子有最后一刻的销售,有些则没有。如果填充了lastminute属性,我想显示%li.lastminute块。如果lastminute属性为空,则不会显示%li.lastminute。如何以及最佳方法是什么?视图中的条件?

3 个答案:

答案 0 :(得分:1)

尝试

%h5 #{house.lastminute} if house.lastminute.present?

答案 1 :(得分:1)

%ul.property_list
%li.lastminute
  %span.icon
  - if house.lastminute
    %h5 #{house.lastminute}
  %h6 #{house.lastminute_conditions}
 %li.guest
  %span.icon
  %h5 #{house.guests}

答案 2 :(得分:1)

是的,您必须在表示层(视图)中有条件。它也不错,因为你想在表示逻辑中改变什么(用户如何看待它)。

但我希望有一个帮助方法来处理你的登录

1 - 干净

2 - 如果您的条件逻辑变得更复杂,那么管理起来会更容易

我首选的解决方案是使用辅助方法

你帮助模块中的

def lastminute?(lastminute)
  lastminute.nil?
end
在您的视图中

- if lastminute?(house.lastminute)
  %li.lastminute
    %span.icon
    %h5 #{house.lastminute}
    %h6 #{house.lastminute_conditions}

HTH:D