0

我的 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" %>
4

2 回答 2

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
于 2013-03-05T06:03:11.763 回答
0

ActionView::Template::Error(nil:NilClass 的未定义方法“+”)

这告诉你返回值first_namenil; 上没有+定义方法NilClass,因此出现错误。

简而言之,User您在 Heroku 上使用的实例没有first_name设置。

于 2013-03-05T06:03:36.240 回答