nil的未定义方法:我的Rails应用程序中的NilClass

时间:2013-05-19 00:13:16

标签: ruby-on-rails-3

我得到了:

undefined method `lat' for nil:NilClass

错误,我想解决它。确切地说,消息是:

NoMethodError in Static_pages#faq

Showing /home/christophecompaq/Pop/app/views/layouts/_signed_in_header.html.erb where line #101 raised:

undefined method `lat' for nil:NilClass
Extracted source (around line #101):

98: <div id="javascript_tags with lat and lang">
99:   <%= javascript_tag do %>
100: user_latitude = "<%=raw @user.lat %>";
101: user_longitude = "<%=raw @user.lng %>";
102: 
103:    <% end %>
104:  </div>

我在静态页面文件夹中有2个其他页面,我也收到此错误 - “联系我们”和“关于我们”。

但是当我从_signed_in_header.html.erb中取出以下代码并将其粘贴到名为show.html.erb的文件中时,错误会停止。

 <div id="javascript_tags with lat and lang">
  <%= javascript_tag do %>
 user_latitude = "<%=raw @user.lat %>";
 user_longitude = "<%=raw @user.lng %>";

    <% end %>
  </div>

但问题是,我需要在_signed_in_header.html.erb中包含该代码。

所以我想我的问题是'我在哪里可以定义user_latitude =“&lt;%= raw @ user.lat%&gt;”和user_longitude =“&lt;%= raw @ user.lng%&gt;”所以我的页面会识别它们而不会给我错误?“我已经尝试过应用程序控制器,静态页面控制器,但我仍然遇到问题。也许我必须在路线文件中放一些东西,我不确定?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您必须查看定义@user实例变量的控制器方法 - 可能是Static_pages#faq

当您将@user传递给视图时,nil等于lat会发生什么。因此,当您尝试发送undefined method方法时,会为nil生成{{1}} lat':NilClass`错误。