使用MetaSearch通过Rails 3中的关联进行搜索

时间:2011-07-06 15:05:55

标签: ruby-on-rails ruby-on-rails-3 associations meta-search

我在我的Rails 3项目中使用了MetaSearch gem。

我有两种模式:

class Company < ActiveRecord::Base
  belongs_to :city
end

class City < ActiveRecord::Base
  has_many :companies
end

我在CompaniesController中执行了操作:

def index
  @search = Company.search(params[:search])
  @companies = @search.all
end

该动作的视图包含:

= form_for @search do |f|
  = f.label :city_id_equals
  = f.select :city_id_equals
  = f.submit 'Search'

我想要一个包含城市名称的列表,以及按城市搜索公司的机会。但是,我没有城市的名称和ID,而是“城市:0x00000102a20488”,搜索无法正常运行。

我认为错误在于:“:city_id_equals”。如何使其正确?

2 个答案:

答案 0 :(得分:5)

找到了解决方案!

而不是:

= f.label :city_id_equals
= f.select :city_id_equals

我应该使用:

= f.label :city_id_equals
= f.collection_select :city_id_equals, City.all, :id, :name, :include_blank => true

答案 1 :(得分:0)

不确定你的问题是否真的很清楚。

首先,我猜你有像<City:0x00000102a20488>这样的东西,它是红宝石对象的字符串表示。如果你想显示城市的名称,city.name应该成功(假设你在城市有一个名字成员!)。

对于搜索,我真的没有得到你想要做的。什么是:city_id_equals对你意味着什么?