我正在尝试使用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元素。
答案 0 :(得分:0)
我不确定Kaminari宝石是如何工作的,但听起来好像一切都在没有index.js.erb
模板的情况下工作,除了不必要的布局?如果是这样,请尝试将layout: false
选项传递给render
以获取Ajax请求,例如:
format.html do
render action: "index", layout: !request.xhr?
end