带有变量id的Jquery文件作为Ajax的选择器

时间:2015-07-22 16:37:26

标签: javascript jquery ruby-on-rails ajax

我想使用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'

微控制器在控制器中定义,但未显示未定义。为什么会这样?

2 个答案:

答案 0 :(得分:0)

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

@micropost = Micropost.find_by(..)

我认为这是一个实例变量问题。

答案 1 :(得分:0)

修正了它。 id上的escape_javascript(应该在字符串上)并且不使用实例变量(使它们在视图中可用)是问题。