0

이 앱에는 농장 has_many Crops의 두 가지 모델이 있습니다. 우리는 Farm # show에서 검색을 수행하기 위해 횡파를 사용하려고합니다. 레일 검색 Ransack NoMethodError

def show 
    @farm = Farm.find(params[:id]) 
    @q = @farm.crops.ransack(params[:q]) 
    @crops = @q.result(distinct: true) 
    end 

농장 번호

보기이 양식 포함 보여줍니다 : 컨트롤러의 show 액션은 다음과 같습니다

<%= search_form_for @q do |f| %> 
    <div> 
    <%= f.label :croptype_cont, "Crop Name Contains:" %> 
    <%= f.text_field :croptype_cont %> 
    </div> 
<%= f.submit "search" %> 
<% end %> 

모든 것이 바로 내 보이는,하지만 우리는이 오류가 계속 - 그것은 최초의 강조 탐색 양식의 종류 :

농장 # 쇼 NoMethodError
정의 방법 crops_path ''

무엇이 누락 되었습니까?

답변

0

기본적으로 ranksack 검색은 색인 작업으로 이동하므로 문서에서 crops_path을 볼 수 있습니다. 여기서는 검색을 위해 별도의 작업을 작성해야합니다. 또는이

1처럼 쇼 수정 작업을 수행하고

def search_crops 
    @farm = Farm.find(params[:id]) 
    @q = @farm.crops.ransack(params[:q]) 
    @crops = @q.result(distinct: true) 
end 

3 정의 전직에만 @q 검색 변수로

def show 
    @farm = Farm.find(params[:id]) 
    @q = @farm.crops.ransack(params[:q]) 
    end 

2 검색에 대한 별도의 조치를 만들 정의 할 수 있습니다 farms/show.html.erb에서 search_crops

get 'search/farm/crops', to: 'farms#search_crops', as: :crops_search 

3-에 대한 URL은 HID를 보내 덴 필드 id

가 5 너무 search_crops 행동에서 @crops을 받고 후에는 show.html.erb 공통 부분을 만들 수 있습니다뿐만 아니라 search_crops.html.erb 및 디스플레이 검색 results.You 수정할 수

<%= search_form_for @q, url: crops_search_path, :html => { :method => :get } do |f| 
    <%= f.hidden_field :id, value: params[:id] %> 
    <div> 
    <%= f.label :croptype_cont, "Crop Name Contains:" %> 
    <%= f.text_field :croptype_cont %> 
    </div> 
<%= f.submit "search" %> 
<% end %> 
농장과 관련된 작물을 검색하기 전에 농장을 얻으려면 코드에 따라