簡體   English   中英

Meta_Search未定義方法錯誤

[英]Meta_Search undefined method error

簡介:我正在使用汽車經銷商應用程序,因此我有一個名為cars的表,其字段為carname_id和carmodel_id。 carname_id和carmodel_id取自2個名為carnames和carmodels的表,其中保存了所有汽車名稱和汽車模型。 現在,我已經設置了這些模型,以便可以將它們關聯起來,例如belongs_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 %>

品牌和型號字段是汽車表中用於存儲汽車和汽車型號名稱的舊文件。 但是,當我進入高級搜索表單時,發現自己陷入了動態選擇模型列表的問題。.在car.rb中,有一個為Car list指定的汽車名稱列表和一個為car models列出的汽車..我同意這是不是最好的方法,這就是為什么我必須創建2個表的原因:一開始就告訴過您的汽車名稱和汽車模型。我已經設置了所有內容,並且添加新汽車的工作符合預期,我可以選擇carname_id來自carnames表和來自carmodels表的carmodel_id,它使用如下形式完美地存儲在數據庫中:

<%= f.label :carname_id, "Car name:" %>
<%= f.select :carname_id, @select_carnames %>

<%= f.label :carmodel_id, "Model name:" %>
<%= f.select :carmodel_id, @select_carmodels %>

這樣我就放棄了cars表中的make和model字段,因為我有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

我希望我描述得盡可能好,並且我真的很希望能對此提供任何幫助和想法。 感謝您的寶貴時間。

答案是

<%= f.label :carname_id_equals, "Model name:" %>
<%= f.collection_select :carname_id_equals, Carname.order('name ASC').all,  :id, :name, :include_blank => true %><br />

<%= f.label :carmodel_id_equals, "Model name:" %>
<%= f.collection_select :carmodel_id_equals, Carmodel.order('name ASC').all, :id, :name, :include_blank => true %><br />

以后我需要閱讀更多Rdoc :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM