2015-07-19 43 views
0

这是很难写的,如果别人在HAML,我怎么能减少重复HAML代码,如果其他条件

它将使代码看起来嵌套和肮脏。

我可以改进下面的代码吗?

- user_agent = UserAgent.parse(request.user_agent) 
    - if user_agent.mobile? 
    .page-header 
     %h4 
     = get_route_title(@from, @to) 
     %small 
      = [t(@interval, scope: "flights"), 
      t(@interval, scope: "flights.interval"), 
      ].join(" ") 
    - @line_charts.each do |line_chart_content| 
     .row.presentation{:style => "padding-left:5px;"} 
     = show_line_chart(line_chart_content) 

    - else 
    .page-header 
     %h1 
     = get_route_title(@from, @to) 
     %small 
      = [get_date_range(@start_date, @start_date+1.month), 
      t(@interval, scope: "flights"), 
      t(@interval, scope: "flights.interval"), 
      ].join(" ") 
    - @line_charts.each do |line_chart_content| 
     .row.presentation{:style => "padding-left:99px;"} 
     = show_line_chart(line_chart_content) 

回答

1
- user_agent = UserAgent.parse(request.user_agent) 
    - content_for :my_part do 
    = get_route_title(@from, @to) 
     %small 
      = [t(@interval, scope: "flights"), 
      t(@interval, scope: "flights.interval"), 
      ].join(" ") 
    - @line_charts.each do |line_chart_content| 
     .row.presentation{:style => "padding-left:5px;"} 
     = show_line_chart(line_chart_content) 
    - if user_agent.mobile? 
    .page-header 
     %h4 
     = yield :mypart 
    - else 
    .page-header 
     %h1 
     = yield :mypart