我差不多完成了!但我有一个问题,在我的Controller文件中有这个:
def show
@user = User.find(params[:id])
@posts = @user.posts.paginate(page: params[:page])
end
然后我在我的文件show.html.erb
中有这段代码:
<div class="span8">
<%= render 'follow_form' if signed_in? %>
<% if @user.posts.any? %>
<h3>Microposts (<%= @user.posts.count %>)</h3>
<div id='posts'>
<div class='page'>
<ol class="microposts">
<%= render @posts %>
</ol>
</div>
</div>
<% end %>
</div>
在这个文件的底部,我有一个我从教程中获取的Javascript代码:https://github.com/amatsuda/kaminari/wiki/How-To:-Create-Infinite-Scrolling-with-jQuery
在同一个文件夹中,我的文件index.js.erb
包含:
$("#articles").append("<div class='page'><%= escape_javascript(render(@users)) %></div>");
$("#posts").append("<div class='page'><%= escape_javascript(render(@posts)) %></div>");
在部分_posts.html.erb
中有这个:
<div class='article'>
<%= image_tag(user.picture_url, :width => 50) %>
<%= link_to user.name, user %>
<% if current_user.admin? && !current_user?(user) %>
| <%= link_to "delete", user, method: :delete,
data: { confirm: "You sure?" } %>
<% end %>
</div>
第一个已经在我的文件index.html.erb
中工作,问题在于第二段代码,当我尝试在@post
渲染局部时,它带来了以下日志:
**
'nil' is not an ActiveModel-compatible object that returns a valid partial path.
Extracted source (around line #2):
1: $("#articles").append("<div class='page'><%= escape_javascript(render(@users)) %></div>");
2: $("#posts").append("<div class='page'><%= escape_javascript(render(@posts)) %></div>");
**
我该如何渲染那部分?
非常感谢:D
答案 0 :(得分:1)
我通常使用.js.erb模板将部分渲染为var,然后使用JS在页面上设置它。一定要rpm_javascript模板内容,否则你会得到JS错误。
<% template_html = render :partial => '_feed_item.html.erb' %>
<%="$('div#content').html('#{escape_javascript(template_html)}</div>');" %>
我认为上述内容应该在erb中起作用。我使用HAML,因此我看起来像:
-template_html = render :partial => 'partial_template'
!="$('div#content').html('#{escape_javascript(template_html)');"
干杯。
答案 1 :(得分:0)
根据您的In script I'm calling to /users?page=, and I was wondering that It may calls the line
,如果您的视图使用此控件,则必须确保控制器正在填充@posts
变量。你能展示控制器方法users
吗?