Jquery文件,变量id作为Ajax选择器

Jquery file with variable id as selector with Ajax

本文关键字:作为 Ajax 选择器 id 变量 文件 Jquery      更新时间:2023-09-26

我想使用Ajax请求更改一个微帖子列表元素。那个页面上有几条微博。我的html文件是这样的。

<div class="load-more-<%= micropost.id %>" >
    <ol class="answerswers" >
      <%= render answers  %>
    </ol>
    <%= link_to "more",more_micropost_path(micropost),remote: true %>
</div> `

我想加载_all_answers.html。使用Ajax单击更多链接时使用。我的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

结束

但是当我按更多时,什么也没有发生。在控制台中,我得到这个错误

NameError在MicropostsController#more未定义的局部变量或方法' micropost' for #<#:0x007f08be826c48>

微post是在控制器中定义的,而不是它显示的undefined。为什么会发生这种情况?

尝试将$(".load-more-<%= escape_javascript(micropost.id) %>")更改为$(".load-more-<%= @micropost.id %>")并在控制器中初始化为

@micropost = Micropost.find_by(..)

我假设这是一个实例变量的问题

修复。Escape_javascript on id(应该是在字符串上)和不使用实例变量(使它们在视图中可用)是问题。