我的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" %>
答案 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
。