如果params存在不起作用

时间:2013-04-10 11:15:51

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

我的网址是这个

/locale/country/
/locale/country/region/

模特:

class Region
belongs: country
end

class Country
has_many: regions
end

区域表中的外键country_id

这是布局文件中nav部分的一部分。

//block region
    - if params[:region].present? 
       %ul.thumbnails
       - @region.tags.find_each(:conditions => "active_house = true") do |a|
          %li.span2
          .thumbnail
            - a.attachments.limit(1).each do |b|
              = image_tag(b.file.url)
            .caption
              %p 
                #{link_to a.h1, tag_country_region_houses_path(@country, @region, a.name), :class => 'btn-nav', class: active_class?(tag_houses_path(a.name))} 
//block country    
    - else
        %ul.thumbnails
        - @country.tags.find_each(:conditions => "active_house = true") do |a|
           %li.span2
            .thumbnail
              - a.attachments.limit(1).each do |b|
                = image_tag(b.file.url)
             .caption
              %p 
                #{link_to a.h1, tag_country_houses_path(@country,  a.name), :class => 'btn-nav', class: active_class?(tag_houses_path(a.name))}

当访问者在路径/本地/国家/地区时我想要显示块国家/当游客在/ locale / country / region时我想显示块区域。

我认为if params[:region].present?会做到这一点。但不......我怎么能意识到这一点?

3 个答案:

答案 0 :(得分:0)

尝试这样做:

if params.has_key?(:region)

或者如果它存在但是包含nil你可以测试它:

unless params[:region].nil?

答案 1 :(得分:0)

它不应该是

class Region
belongs_to: country
end

而不是

class Region
belongs: country
end

干杯

答案 2 :(得分:0)

行前

- if params[:region].present? 

在您看来,尝试打印线条,

- p params[:region]
- p params[:region].present?

可以给你一些关于行为的线索。