Поиск по ассоциации в 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
должен значить для вас?