仅在Heroku上获取NilClass错误

时间:2013-03-05 05:42:11

标签: ruby-on-rails heroku

我的heroku日志中出现错误,但一切都在本地运行正常。有什么想法吗?

The error: ActionView::Template::Error (undefined method `+' for nil:NilClass)

我在user.rb中只有这个小方法。

  def full_name
    return first_name + " " + last_name
  end

这是heroku日志:

2013-03-05T05:34:54+00:00 app[web.1]: Started GET "/" for 98.222.28.137 at 2013-03-05 05:34:54 +0000
2013-03-05T05:34:54+00:00 heroku[router]: at=info method=GET path=/ host=objecss.herokuapp.com fwd="98.222.28.137" dyno=web.1 queue=0 wait=0ms connect=1ms service=73ms status=500 bytes=643
2013-03-05T05:34:54+00:00 app[web.1]: ActionView::Template::Error (undefined method `+' for nil:NilClass):
2013-03-05T05:34:54+00:00 app[web.1]: Processing by EntriesController#index as HTML
2013-03-05T05:34:54+00:00 app[web.1]: Completed 500 Internal Server Error in 15ms
2013-03-05T05:34:54+00:00 app[web.1]:   Rendered entries/_entries.html.erb (7.7ms)
2013-03-05T05:34:54+00:00 app[web.1]:     16:           <%=  link_to "Users", users_path %>
2013-03-05T05:34:54+00:00 app[web.1]:     12:   <% if current_user  %>
2013-03-05T05:34:54+00:00 app[web.1]:   Rendered entries/index.html.erb within layouts/application (12.5ms)
2013-03-05T05:34:54+00:00 app[web.1]:
2013-03-05T05:34:54+00:00 app[web.1]:   app/controllers/entries_controller.rb:9:in `index'
2013-03-05T05:34:54+00:00 app[web.1]:
2013-03-05T05:34:54+00:00 app[web.1]:   app/models/user.rb:21:in `full_name'
2013-03-05T05:34:54+00:00 app[web.1]:   app/views/layouts/application.html.erb:13:in `_app_views_layouts_application_html_erb___2449026742642080137_44886800'
2013-03-05T05:34:54+00:00 app[web.1]:     15:       <% if admin? %>
2013-03-05T05:34:54+00:00 app[web.1]:     13:       <%= link_to "#{current_user.full_name}", current_user %>
2013-03-05T05:34:54+00:00 app[web.1]:     11:   <%= link_to "Objecss", entries_path %>
2013-03-05T05:34:54+00:00 app[web.1]:     10: <div class="utility">
2013-03-05T05:34:54+00:00 app[web.1]:     14:       <%= link_to "Log Out", logout_path("current"), method: "delete" %>

2 个答案:

答案 0 :(得分:0)

这是由未为此特定用户设置的名字和姓氏引起的。只需打开heroku上的rails控制台,并为该用户分配名字和姓氏。你可以做这样的事情

[56] pry(main)> u=User.find(1)
  User Load (0.7ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
[58] pry(main)> u.first_name = "John"
=> "John"
[59] pry(main)> u.last_name = "Doe"
=> "Doe"
[60] pry(main)> u.save
   (0.3ms)  BEGIN
  User Exists (1.6ms)  SELECT 1 AS one FROM "users" WHERE ("users"."username" = 'example' AND "users"."id" != 1) LIMIT 1
   (1.3ms)  UPDATE "users" SET "first_name" = 'John', "last_name" = 'Doe', "updated_at" = '2013-03-05 06:01:55.263347' WHERE "users"."id" = 1
   (24.5ms)  COMMIT
=> true

答案 1 :(得分:0)

  

ActionView :: Template :: Error(未定义的方法`+'代表nil:NilClass)

这告诉您first_name的返回值为nil; +上没有定义NilClass方法,因此错误。

简单地说,您在Heroku上使用的User实例没有设置first_name