Поиск по ассоциации в Rails 3 с MetaSearch - PullRequest
2 голосов
/ 06 июля 2011

Я использую гем 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 ]

5 голосов
/ 07 июля 2011

Решение найдено!

Вместо:

= 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
0 голосов
/ 06 июля 2011

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

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

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

...