我想使用Ajax请求更改微博列表元素。该页面中有几个微博。我的html文件看起来像这样。
<div class="load-more-<%= micropost.id %>" >
<ol class="answers" >
<%= render answers %>
</ol>
<%= link_to "more",more_micropost_path(micropost),remote: true %>
</div> `
我想在使用Ajax点击更多链接时加载_all_answers.html.erb。我的js文件是
$(".load-more-<%= escape_javascript(micropost.id) %>").html("<%= escape_javascript(render('answers/all_answers')) %>");
和控制器操作是
def more
micropost=Micropost.find_by(id: params[:id])
@answers=micropost.answers
respond_to do |format|
format.html {redirect_to micropost}
format.js
end
结束
但是当我按下更多时,没有任何事情发生。在控制台中我收到此错误
MicropostsController中的NameError#更多未定义的局部变量或 #&lt;#:0x007f08be826c48&gt;
的方法`micropost'
微控制器在控制器中定义,但未显示未定义。为什么会这样?
答案 0 :(得分:0)
尝试将$(".load-more-<%= escape_javascript(micropost.id) %>")
更改为$(".load-more-<%= @micropost.id %>")
并在控制器中初始化为
@micropost = Micropost.find_by(..)
我认为这是一个实例变量问题。
答案 1 :(得分:0)
修正了它。 id上的escape_javascript(应该在字符串上)并且不使用实例变量(使它们在视图中可用)是问题。