我在我的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”。如何使其正确?
答案 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
对你意味着什么?