2

will_paginate Gem を使用して、同じページ (同じコントローラー アクション) で複数の Ajax 呼び出しを行う方法を考え出そうとしています。これまでのところ、各インスタンス変数に独自の param_name を指定して、:page のデフォルト パラメータを使用しないようにしました。

コントローラーの例

@meats= Recipe.meat_recipes.paginate(:page => params[:meat_recipes], :per_page => 1)
@vegrecipes = Recipe.veg_recipes.paginate(:page => params[:veg_recipes], :per_page => 1)
@desserts = Recipe.dessert_recipes.paginate(:page => params[:dessert_recipes], :per_page => 1)

次に、ビューで

 <%= will_paginate @meats,  :param_name => 'meat_recipes'  %> (repeat this for individual instance variables)

ですから、この部分は問題ありません。私がやっていることは、AJAXリクエストがそのように行われたときにパーシャルをロードすることです

.js.erb ファイル

$('#meatRecipes').html('<%= escape_javascript(render partial: 'meatrecipes') %>');
$.setAjaxPagination();

現時点では、私の肉のインスタンス変数は正常に機能しています。では、params に基づいて if ステートメントを実行するにはどうすればよいでしょうか。

たとえば、これを試しました

<% if @meats %>
$('#meatRecipes').html('<%= escape_javascript(render partial: 'meatrecipes') %>');
$.setAjaxPagination();
<% end %>

<% if @vegrecipes %>
$('#vegRecipes').html('<%= escape_javascript(render partial: 'vegrecipes') %>');
$.setAjaxPagination();
<% end %>

また試した

<% if @meats[:param_name] == 'meat_recipes' %>
$('#meatRecipes').html('<%= escape_javascript(render partial: 'meatrecipes') %>');
$.setAjaxPagination();
<% end %>

<% if @vegrecipes[:param_name == 'veg_recipes' %>
$('#vegRecipes').html('<%= escape_javascript(render partial: 'vegrecipes') %>');
$.setAjaxPagination();
<% end %>

しかし、これは機能しません。したがって、私の質問は、特定のページ付けセクションに対して正しいパーシャルが呼び出されるようにするために、引数として何を使用すればよいかということだと思います。

これを正しく説明したことを願っています

4

1 に答える 1

4

OKなので、このソリューションを@karlにクレジットする必要がありますが、これは機能します..誰かがより良い方法を持っていない限り?

 <% if params[:meat_recipes] %>
 $('#meatRecipes').html('<%= escape_javascript(render partial: 'meatrecipes') %>');
 $.setAjaxPagination();
 <% end %>

 <% if  params[:veg_recipes] %>
 $('#vegRecipes').html('<%= escape_javascript(render partial: 'vegeterianrecipes') %>');
 $.setAjaxPagination();
 <% end %>

 <% if  params[:dessert_recipes] %>
 $('#dessertRecipes').html('<%= escape_javascript(render partial: 'dessertrecipes') %>');
 $.setAjaxPagination();
于 2012-12-10T19:51:46.150 に答える