フィルタシステムを操作していて、検索結果の読み込み方法と競合しています。 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 %>
しかし、それでもコントローラのインデックスアクションに行きます。
GET:フィルター、上:コレクションは、私が探していたものでした。それ以外のものはurl/recipes /:recipe_id/filterに追加しました。これは私がやろうとしたことではありません。ありがとう – DRing