在我最近部署到Heroku期间,我的应用程序停止了工作 - 但是,它在本地工作正常。该应用程序在Heroku的雪松堆上运行。
在Heroku上拖尾日志后,我收集了以下错误:
TypeError ([1] is not a symbol):
app/controllers/application_controller.rb:9:in `new_post'
以下是application_controller.rb的代码:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :new_post
before_filter :new_channel
def new_post
@new_post = Post.new
@select_channels = current_user.channels.all
end
def new_channel
@new_channel = Channel.new
end
def after_sign_in_path_for(resource)
browse_path
end
end
以下是频道的模型:
class Channel < ActiveRecord::Base
attr_accessible :title, :description, :cover_image, :status, :writable, :visibility
has_one :channel_publication
has_one :user, :through => :channel_publication
has_many :channel_subscriptions
has_many :channel_post_connections
accepts_nested_attributes_for :channel_publication
accepts_nested_attributes_for :user
end
我似乎无法弄清楚造成这种TypeError的原因,以及为什么它只在部署到Heroku时才会发生。任何帮助将不胜感激!
答案 0 :(得分:0)
我最终解决了这个问题 - 这是一个愚蠢的错误。
为了确保它不是数据库的问题,我使用Heroku的fork命令分叉应用程序 - 创建一个清理/新鲜的环境和一个干净的数据库。
从那里,同样的错误仍然存在,但是,日志给了我更详细的信息......结果是我在数据库中没有现有条目的对象循环。