2011-10-08 5 views
1

소개 : carname_id 및 carmodel_id 필드가있는 cars라는 테이블이 있으므로 Car dealer 응용 프로그램에서 작업하고 있습니다. carname_id 및 carmodel_id는 carnames 및 carmodels이라는 2 개의 테이블에서 가져온 것으로 모든 자동차 이름과 자동차 모델을 유지합니다. 이제이 모델을 설정하여 belongs_to 및 has_many와 같은 관계에 넣을 수 있습니다 (관련성없는 원인으로 작동하지 않음 - 선택 목록에서 새 자동차에 자동차와 모델을 추가 할 수 있음)Meta_Search undefined method error

나는 많은 분야로 검색하여 자신의

<%= 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 %> 

제조업체와 모델 필드는 내가 차와 모델 이름을 저장하기 위해 사용되는 자동차 테이블에서 이전 fileds이 같은 search_form의 코드가 보이는 할 meta_search을 사용하고

차에요. 그러나 고급 검색 폼에 들어가면 모델 목록을 동적으로 선택하는 데 어려움을 겪었습니다. car 목록에 지정된 자동차 이름 목록과 자동차 모델 목록이 car.rb에 있습니다.이 점에 동의합니다. 그것을 할 수있는 가장 좋은 방법은 아닙니다. 그래서 제가 테이블 2 개를 만들어야 만했던 이유입니다. 처음에 말씀 드린 carnames와 carmodels .. 저는 모든 것을 설치했고 예상대로 새 차를 추가했습니다. 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 %> 

나는이 개 새로운 작업 필드 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 %> 

것은 나에게 오류를 반환
수 MetaSearch에 대한 정의되지 않은 메서드`carname_id_contains ' : 검색 :: 자동차 : 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 

나는 희망 I 드 가능한 한 선을 그어서 나는이 것에 대한 어떤 도움이나 아이디어라도 정말 감사 할 것입니다. 시간 내 주셔서 감사합니다.

답변

1

대답은

<%= 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을 읽을 :)

이 필요합니다입니다
관련 문제