2017-08-27 11 views
0

フィルタシステムを操作していて、検索結果の読み込み方法と競合しています。 jquery-infinite-scrollプラグインを使用して、ユーザーがスクロールしたときにさらに結果をロードします。したがって、私は余分な結果を追加するindex.js.erbを持っています:Railsはインデックスの操作を代替します

$("#recipes").append("<%= escape_javascript(render 'recipe_card') %>"); 
<% if @recipes.last_page? %> 
    $('#paginator').html("No More Recipes"); 
<% else %> 
    $('#paginator').html('<%= escape_javascript(link_to_next_page(@recipes, "Next Page", remote: true).to_s) %>'); 
<% end %> 

私のフィルタを実装しようとすると問題が発生します。私は検索条件として使用されるチェックボックス付きフォームを使用しています。

<%= form_tag(recipes_path, :method => "get", id: "Filters", remote: true, html: {class: "form-horizontal"}) do %> 

問題は、これがスクロールしてロードされます雷ページと同じインデックスのルートを使用している:ここではform_tagです。したがって、フィルタされた結果を置き換えるのではなく、追加します。他のコントローラのアクションを使用するルートを追加する方法を理解することができませんでした。私は自分のコントローラにこれを追加しました:その後、

def filter 
    @recipes = RecipeSearch.new(query: params[:search], options: params).search 
    end 

とはfilter.js.erbファイル作成:ちょうどそのアクションへのルートにform_tagを変更する方法を見つけ出すカント

$("#recipes").html("<%= escape_javascript(render 'recipe_card') %>"); 
<% if @recipes.last_page? %> 
    $('#paginator').html("No More Recipes"); 
<% else %> 
    $('#paginator').html('<%= escape_javascript(link_to_next_page(@recipes, "Next Page", remote: true).to_s) %>'); 
<% end %> 

を...私はこれを試みた:

<%= form_tag(recipes_path, url: {action: 'filter'}, :method => "get", id: "Filters", remote: true, html: {class: "form-horizontal"}) do %> 

しかし、それでもコントローラのインデックスアクションに行きます。

答えて

1

form_tagのURLはrecipes_pathパラメータで指定されているため、ルートの設定方法によっては変更する必要があります。例えば

あなたのようなルートを設定した場合、:

resources :recipes do 
    get :filter, on: :collection 
end 

あなたが代わりにrecipes_pathを使用することができますfilter_recipes_pathを持つ必要があります。それ以外の場合は、as:オプションを使用して名前付きヘルパーを作成できます。最後に、そのルートに名前付きヘルパーを必要としない場合は、単にurl_forを使用できます。だから、次のいずれかが動作するはずです:

form_tag(filter_recipes_path, method: 'get', ...) do 

または

form_tag(url_for(controller: :recipes, action: :filter), method: 'get' ...) do 
+0

GET:フィルター、上:コレクションは、私が探していたものでした。それ以外のものはurl/recipes /:recipe_id/filterに追加しました。これは私がやろうとしたことではありません。ありがとう – DRing

関連する問題