在rails app上获得500内部服务器错误(发布了heroku日志)

时间:2013-03-20 08:24:22

标签: ruby ruby-on-rails-3 heroku

更新 我解决了代码中的if语句存在一些问题

一切都在本地工作正常,但我不确定为什么我会收到错误

我有我的rails应用程序,我正在尝试访问URL“/ users / username”,例如tbrown。它只是由未定义的方法“管理员”或其他东西引起的? Admin_user已经在我的application_controller.rb中定义,我有一个admin_user.rb模型。这里发布的是heroku日志和控制器

heroku日志

2013-03-20T08:05:55+00:00 app[web.1]: Started GET "/users/tbrown" for xx.xx.xx
.xx at 2013-03-20 08:05:55 +0000
2013-03-20T08:05:55+00:00 app[web.1]:
2013-03-20T08:05:56+00:00 app[web.1]:
2013-03-20T08:05:56+00:00 app[web.1]:     22:     <% end %></div>
2013-03-20T08:05:56+00:00 app[web.1]: ActionView::Template::Error (undefined met
hod `admin?' for nil:NilClass):
2013-03-20T08:05:56+00:00 app[web.1]:     23:     <% if current_user.admin? %>
 2013-03-20T08:05:56+00:00 app[web.1]:     21:     <span class="content2"><%= com
ment.comment_content %></span>
2013-03-20T08:05:56+00:00 app[web.1]:     24:     <%= link_to "delete", pos
t, method: :delete,

application_controller

def admin_user?
    unless current_user && current_user.admin?
      redirect_to root_url
      return false
    end
  end

1 个答案:

答案 0 :(得分:2)

问题出在app/views/posts/_post.html.erb在线视图中:

<% if current_user.admin? %>

这假设current_user不是nil(即用户已登录)。您已经在控制器admin_user?方法中围绕该问题进行防御性编码。最好沿同一行实现一个辅助方法(但没有重定向),而是从你的视图中调用它。