我在過濾系統上工作,並且與加載我的搜索結果的方式發生衝突。我使用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:
<%= form_tag(recipes_path, :method => "get", id: "Filters", remote: true, html: {class: "form-horizontal"}) do %>
問題是這樣使用相同指數的路線爲獲得裝有滾動的雷頁面。所以它附加了過濾結果而不是替換它們。我無法弄清楚如何添加一條路線來使用不同的控制器動作。我已經加入這個我的控制器:
def filter
@recipes = RecipeSearch.new(query: params[:search], options: params).search
end
然後創建一個filter.js.erb文件:
$("#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路由到這一行動...我試過這個:
<%= 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