【问题标题】:Best use of if conditions in the view?视图中if条件的最佳使用?
【发布时间】:2014-02-10 19:03:12
【问题描述】:

场景/目标是:

当访问者在主页上时,头部导航中的链接是:“别墅”、“公寓”、“B&B” 当访问者位于国家/地区页面(例如:en/italy)时,头部导航中的链接如下:“Villas Italy”、“Apartments Italy”、“B&B Italy” 当访问者在区域页面上时(例如:en/italy/tuscany),头部导航中的链接是:“Villas Tuscany”、“Apartments Tuscany”、“B&B Tuscany”

这是我的代码:

%ul.dropdown-menu.span3
- if @country.present? 
  %li
    %b
    = link_to "#{t('navigation.nav.houses_all')} #{@country.name}", country_houses_path(@country)
  %li.divider  
  %li.nav-header Thema's 
  - @country.tags.each do |a|
    %li
      #{link_to a.nav_content, tag_country_houses_path(a.country,  a.name).capitalize}
- if @region.present? && @country.present?
  %li
    %b
    = link_to "#{t('navigation.nav.houses_all')} #{@region.name}", country_region_houses_path(@country, @region)
  %li.divider  
  %li.nav-header Thema's
  - @region.tags.find_each(:conditions => "active_house = true") do |a|
    %li
      #{link_to a.nav_content, tag_country_region_houses_path(@country, @region, a.name)}
- else 
  %li
    %b
    = link_to "#{t('navigation.nav.houses_all')}", houses_path
  %li.divider

所以我想要实现的是,当设置了@region 值时,我想显示导航设置的一部分@country 值,我想显示另一部分。但是当我在区域页面(en/italy/tuscany)上时,也会显示@country nav 部分,因为@country 也已设置。

我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-3.1


    【解决方案1】:

    如果您只想在没有@region 菜单的情况下显示@country 菜单,您可以尝试使用elsif

    %ul.dropdown-menu.span3
    - if @region.present? && @country.present?
      %li
        %b
        = link_to "#{t('navigation.nav.houses_all')} #{@region.name}", country_region_houses_path(@country, @region)
      %li.divider  
      %li.nav-header Thema's
      - @region.tags.find_each(:conditions => "active_house = true") do |a|
        %li
          #{link_to a.nav_content, tag_country_region_houses_path(@country, @region, a.name)}
    - elsif @country.present? 
      %li
        %b
        = link_to "#{t('navigation.nav.houses_all')} #{@country.name}", country_houses_path(@country)
      %li.divider  
      %li.nav-header Thema's 
      - @country.tags.each do |a|
        %li
          #{link_to a.nav_content, tag_country_houses_path(a.country,  a.name).capitalize}
    - else 
      %li
        %b
        = link_to "#{t('navigation.nav.houses_all')}", houses_path
      %li.divider
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2020-11-02
      相关资源
      最近更新 更多