【问题标题】:Ajax with new controller action rails带有新控制器动作导轨的 Ajax
【发布时间】:2015-07-22 23:26:52
【问题描述】:

我创建了一个名为 more 的新 micropost 控制器操作来接收 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 文件-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 文件

&lt;%= link_to "load more",more_micropost_path(micropost),remote: true %&gt;

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

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

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

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

【问题讨论】:

  • ajax 调用会发生什么。?请解释您面临的问题。
  • 请清楚说明您的问题以及您遇到了什么错误?
  • 什么都没有发生......它只是保持不变......
  • JS 控制台有错误吗?
  • 试试这个$(".microposts").html("&lt;%= escape_javascript(render paartial: 'users/unfollow') %&gt;");

标签: javascript jquery ruby-on-rails ajax


【解决方案1】:

根据您在 cmets 中发布的错误判断,这行可能有问题:

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

find_by 需要一个哈希,所以要么使用find

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

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

【讨论】:

  • 按照您所说的更改了代码,但同样的错误。如果我删除 remote: true,它工作正常。
  • hmm,这样的错误应该显示在本地运行的服务器输出中。你能用整个异常堆栈跟踪粘贴错误吗?
  • 我将 jquery 文件更改为 $("div").hide() 并且它可以工作。否则,萤火虫错误控制台会在右侧显示此 jquery 行。我不确定它是否是一个错误。 lixhr.send( ( options.hasContent && options.data ) || null );控制台上的错误添加到上面的问题中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多