带有新控制器操作栏的Ajax

时间:2015-07-22 14:20:00

标签: javascript jquery ruby-on-rails ajax

我创建了一个名为more的新微控制器操作来接收ajax请求。

def more
  micropost=Micropost.find_by(params[:id])
  @answers=micropost.answers
  respond_to do |format|
   format.html {redirect_to micropost}
   format.js
  end
end

我创建了jquery file- more.js.erb

$(".microposts").html("<%= escape_javascript(render('users/unfollow')) %>"); `

用部分替换内容 我的路线文件就像

resources :microposts, only: [:edit,:create,:destroy,:update,:show,:more] do
  member do
    get :more
  end
end

我用

在视图中调用javascript文件

<%= link_to "load more",more_micropost_path(micropost),remote: true %>

它使用普通的html请求而不是ajax.当我点击链接时没有任何反应。我看到一些人提出了类似的问题,但修复程序对我不起作用。有人可以帮我弄这个吗。提前致谢.. firebug控制台中的错误是

`500内部服务器错误。 MicropostsController中的NoMethodError#more。 nil的未定义方法ID:NilClass&#39;

firebug错误控制台在右侧显示此jquery行。我不确定它是否是一个错误。

lixhr.send((options.hasContent&amp;&amp; options.data)|| null);

1 个答案:

答案 0 :(得分:0)

根据您在评论中发布的错误判断,此行可能存在问题:

micropost = Micropost.find_by(params[:id])

find_by需要哈希值,因此请使用find

micropost = Micropost.find(params[:id])

micropost = Micropost.find_by(id: params[:id])