【问题标题】:Search by association in Rails 3 with MetaSearch在 Rails 3 中使用 MetaSearch 按关联搜索
【发布时间】:2011-09-29 17:31:07
【问题描述】:

我在我的 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,而是使用“City:0x00000102a20488”之类的内容,并且搜索无法正常工作。

我认为错误在这里:“:city_id_equals”。如何让它正确?

【问题讨论】:

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


    【解决方案1】:

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

    首先,我猜你有类似&lt;City:0x00000102a20488&gt; 的东西,它是一个ruby 对象的字符串表示。如果您想显示城市的名称,city.name 应该可以解决问题(假设您在城市中有 name 成员!)。

    对于搜索,我真的不明白你想要做什么。 :city_id_equals 对你来说意味着什么?

    【讨论】:

    • 我很伤心,我想搜索属于所选城市的公司。在这里阅读 MetaSearch gem 的文档:link,并且有关联字段的示例:“f.text_field :developers_notes_note_contains”。我想要这样的东西,但使用选择标签而不是 text_field。
    【解决方案2】:

    找到了解决办法!

    代替:

    = 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      相关资源
      最近更新 更多