【问题标题】:Rails 4 Ajax NoMethodError - undefined method `id' for nil:NilClass: in my create.js.erb fileRails 4 Ajax NoMethodError - nil:NilClass 的未定义方法“id”:在我的 create.js.erb 文件中
【发布时间】:2014-06-19 10:16:10
【问题描述】:

我正在尝试在单击按钮时呈现部分内容。我相信我在做一些明显错误的事情......而且我希望它不会会出现在以下情况:

$('#modrequest').empty();
$('#modrequest').html("<%= escape_javascript(render(:partial => 'moderator_requests/links')).html_safe %>");

错误是

NoMethodError - nil:NilClass: 的未定义方法“id”:

我预计我在其他地方做错了什么,但我不确定在哪里,所以我不会发布大量代码,而是发布任何请求的文件。

谢谢

【问题讨论】:

  • 调用 ajax 后出现此错误?你能发布你的ajax方法和你正在渲染的部分吗

标签: javascript ruby-on-rails ajax ruby-on-rails-4.1


【解决方案1】:

错误

该错误可能是您在partial 中调用未设置数据的结果:

#partial
<%= item.id %>

--

修复

因为您必须传递 local variables to your partials,所以您没有传递任何信息 - 这将阻止它调用所需的数据。您将能够像这样解决问题:

$('#modrequest').html("<%=j render(:partial => 'moderator_requests/links', locals: {your: "local"}).html_safe %>");

如果您的数据无法传递到您的部分,您最好将其放入helper,这样您就可以在应用程序的任何部分填充它

--

定义

NoMethodError - nil:NilClass 的未定义方法 `id'

这个错误基本上意味着您试图在不存在的数据上调用id。您要么需要显示部分,要么确定您尝试在部分中调用哪些数据

要解决这个问题,您基本上需要能够将正确的数据传递给您的部分;通过local 变量或helper

【讨论】:

  • 太棒了,太完美了,谢谢。我能够将信息作为本地变量传递给部分。出于兴趣,您会在什么时候考虑切换到辅助方法?我的部分只需要一个对象 ID,所以这不是一个大问题,但我也希望能够为此使用辅助方法。
  • 如果您需要在应用程序的其他部分使用相同的数据,我会使用助手。一个很好的例子是使用nav 栏(如果您要在整个应用程序中为导航栏从数据库调用数据)
  • 好的,有道理,再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2015-06-30
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多