0

我有UsersController,在这个控制器中我正在加载用户的帖子,如下所示:

def welcome
  @postss = Post.page(params[:page]).per_page(10)
  render 'users/show'
end

然后在users/show.html.haml

#posts
  = render 'posts/index', :posts => @postss
  = will_paginate @postss

users/show.js.erb

alert('a');
$('#posts').append('<%= j render('posts/show') %>');
<% if @postss.next_page %>
    alert('c');
  $('.pagination').replaceWith('<%= j will_paginate(@posts) %>');
<% else %>
    alert('c');
  $('.pagination').remove();
<% end %>

问题是,当我加载页面时,我在控制台中看到此错误消息:

ActionView::Template::Error (undefined local variable or method `post' for #<#<Class:0x007ff707e647d0>:0x007ff726648d98>):

但我无法检测到问题所在 - 我将alert消息放入 JS 文件中,但没有弹出......我将不胜感激每一个建议。

非常感谢

编辑: 我关注了这个话题。我的代码的不同之处在于,在块index.html.erb中我使用@postss而不是@posts,因为这个变量是空的(我不知道这是否是要点上的错字)

4

2 回答 2

0

试试这个users/show.js.erb

$('#posts').append("#{escape_javascript(render(:file => 'posts/show.html.haml'))}")
<% if @postss.next_page %>
  $('.pagination').replaceWith('<%= j will_paginate(@posts) %>');
<% else %>
  $('.pagination').remove();
<% end %>
于 2013-07-10T05:40:21.727 回答
0

users/show.js.erb

$('.pagination').replaceWith('<%= j will_paginate(@posts) %>');

你在那里使用了错误的变量名!替换为@postss

于 2013-07-09T10:53:56.390 回答