Поиск по ассоциации в Rails 3 с MetaSearch

Я использую гем MetaSearch в своем проекте Rails 3.

У меня есть две модели:

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'

Мне нужен список с названиями городов и возможность поиска компаний по городам. Но вместо названий и идентификаторов городов у меня есть что-то вроде "City:0x00000102a20488", и поиск не работает должным образом.

Я думаю, что ошибка здесь: ":city_id_equals". Как сделать это правильно?

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

Не уверен, что ваш вопрос действительно ясен.

Прежде всего, я думаю, у вас есть что-то вроде <City:0x00000102a20488>, который является строковым представлением объекта ruby. Если вы хотите отобразить название города, city.name должен сделать трюк (при условии, что у вас есть имя члена города!).

Для поиска я не совсем понимаю, что вы пытаетесь сделать. Что такое :city_id_equals должен значить для вас?

Другие вопросы по тегам