部分无限滚动返回整个布局而不是附加部分Rails 4

时间:2015-07-23 16:42:43

标签: javascript jquery ruby-on-rails ruby ruby-on-rails-4

我正在尝试使用Rails部分实现无限滚动功能,但是当脚本运行时,它会加载整个application.html.erb布局而不是仅添加部分。如何使其附加部分以便页面正确显示?

这应该是一个非常简单的修复,但我遗漏了一些明显的东西。

视图/家/ index.html.erb

<ol id="scroll-container">
  <%= render :partial => "stories/partial123", :collection => @stories,
:as => :story %>
</ol>
<div id="pages">
  <%= paginate @stories, :remote => true %>
</div>

视图/故事/ _partial123.html.erb

<li>
  <div id="individual_story">...</div>
</li>

我正在使用Kaminari gem进行分页,因此我为下一页链接获得/?page=2之类的内容。

控制器/ home_controller.rb

def index
  # Kaminari pagination
  @stories = stories.newest.page(params[:page]).per(5)

respond_to do |format|
  format.js
  format.html { render :action => "index" }
  format.json { render :json => @stories }
end

在查看了无数的教程和SO答案之后,看起来我需要类似下面的index.js,但我似乎无法使其正常工作。我是在正确的轨道上吗?为什么不执行此代码?

视图/家/ index.js.erb的

$('#scroll-container').html('<%= escape_javascript render(:partial => "stories/partial123", :collection => @stories,
:as => :story) %>');
$('#pages').html('<%= escape_javascript(paginate (@stories, :remote => true).to_s) %>');

作为参考,我还使用Infinite jQuery Scroll link来加载JQuery元素。

1 个答案:

答案 0 :(得分:0)

我不确定Kaminari宝石是如何工作的,但听起来好像一切都在没有index.js.erb模板的情况下工作,除了不必要的布局?如果是这样,请尝试将layout: false选项传递给render以获取Ajax请求,例如:

format.html do
  render action: "index", layout: !request.xhr?
end