Вступление: Я работаю над приложением Автодилер, поэтому у меня есть таблица с именами автомобилей с полями carname_id и carmodel_id.carname_id и carmodel_id взяты из 2 таблиц с именами машин и кармоделей, где я храню все названия машин и модели автомобилей.Теперь я настроил эти модели, чтобы иметь их в отношении, что-то вроде own_to и has_many (не имеет значения, потому что это работает должным образом - я могу добавлять автомобили и модели в новый автомобиль из списка выбора)
Я использую meta_search для поиска по многим полям, и код в search_form выглядит как его
<%= f.label :make_contains, "Select Car Make" %>
<%= f.select :make_contains, Car::CAR_MAKE %>
<%= f.label :model_contains, "Select Model" %>
<%= f.text_field :model_contains, Car::CAR_MODEL %>
поля make и model - это старые поля в таблице cars, которые я использовал для храненияавтомобиль и модель автомобиля.Но когда я вошел в форму расширенного поиска, я застрял в динамическом выборе списка моделей. У меня есть в car.rb список имен автомобилей, указанных для списка автомобилей, и список моделей автомобилей. Я согласен, что этоне самый лучший способ сделать это, поэтому мне пришлось создать 2 таблицы: имена машин и кармодели, о которых я вам рассказывал с самого начала. Я настроил все, и добавление новой машины работает, как и ожидалось, я могу выбрать carname_idиз таблицы carnames и carmodel_id из таблицы carmodels, и она отлично хранится в базе данных, используя такую форму:
<%= f.label :carname_id, "Car name:" %>
<%= f.select :carname_id, @select_carnames %>
<%= f.label :carmodel_id, "Model name:" %>
<%= f.select :carmodel_id, @select_carmodels %>
таким образом я отказываюсь от полей марки и модели из таблицы автомобилей, так как у меня есть 2 новых рабочих поляcarname_id и carmodel_id
Теперь к проблеме: как мне выполнить поиск по carmodel_id и carname_id, когда я создаю такую форму:
<%= f.label :carname_id_contains, "Model name:" %>
<%= f.select :carname_id_contains, @select_carnames %>
<%= f.label :carmodel_id_contains, "Model name:" %>
<%= f.select :carmodel_id_contains, @select_carmodels %>
возвращает меняошибка неопределенный метод `carname_id_contains 'для MetaSearch :: Searches :: Car: 0xb584b7a4
контроллер автомобилей:
def index
@search = Car.search(params[:search])
@cars = @search.all.paginate :page => params[:page], :per_page => 18
@select_carnames = Carname.find(:all).map{|element| [element.name, element.id]}
@select_carmodels = Carmodel.find(:all).map{|element| [element.name, element.id]}
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @cars }
format.json { render :json => @cars.map(&:attributes) }
end
end
def new
@car = Car.new
@select_carnames = Carname.find(:all).map{|element| [element.name, element.id]}
@select_carmodels = Carmodel.find(:all).map{|element| [element.name, element.id]}
5.times { @car.assets.build }
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @car }
end
end
def edit
@car = Car.find(params[:id])}
@select_carnames = Carname.find(:all).map{|element| [element.name, element.id]}}
@select_carmodels = Carmodel.find(:all).map{|element| [element.name, element.id]}}<br />
5.times { @car.assets.build }
end
Надеюсь, я описал его как можно лучше, и ядействительно буду признателен за любую помощь и любые идеи по этому вопросу.Спасибо всем за ваше время.