例如,我使用数据远程进行分页,如下所示:
<%= paginate @products, :remote => true %>
有效。但问题是我有一个页面分页的多个列表。所以,我需要一种方法将调用发送到单独的文件,以便我可以呈现适当的内容。我怎么能这样做?
我的index.js.erb:
<% if params[:list] %>
$('#products').html('<%= escape_javascript render(@products) %>');
$('#paginator').html('<%= escape_javascript(paginate(@products, remote: true, param_name: 'list' ).to_s) %>');
<% end %>
答案 0 :(得分:1)
为此,您需要添加另一个paginate参数。
<%= paginate @products, :remote => true, :param_name => param_name %>
此参数名称将作为参数传递给控制器,以便您可以控制要调用的ajax分页。
如果您正在调用相同的操作,那么根据参数名称,您也可以更改@products
的值。您还需要在xxxx.js.erb
文件中考虑另外一件事,即需要渲染分页对象。
在你的js文件中,你也可以在param的基础上改变html。
- if params[:xxx]
$('#xxx').html('#{escape_javascript render(:partial =>"partial_name",:locals => { :posts => @products, :param_name => 'xxx'})}');
$('#xxx #paginator').html('#{escape_javascript(paginate(@products, :remote => true, :param_name => 'xxx').to_s)}');
- if params[:yyy]
$('#yyy').html('#{escape_javascript render(:partial =>"partial_name",:locals => { :posts => @products, :param_name => 'yyy'})}');
$('#yyy #paginator').html('#{escape_javascript(paginate(@products, :remote => true, :param_name => 'yyy').to_s)}');
在您的控制器中,您应该使用param_name
而不是参数page