Ruby on rails 从Heroku运行应用程序
我已经构建了我的rails应用程序,并将其推送到Heroku上线。问题是我无法创建或更新事件。当尝试更新或创建时,我得到的信息是“出了问题”。以下是我的heroku日志中的错误:Ruby on rails 从Heroku运行应用程序,ruby-on-rails,ruby,ruby-on-rails-4,heroku,Ruby On Rails,Ruby,Ruby On Rails 4,Heroku,我已经构建了我的rails应用程序,并将其推送到Heroku上线。问题是我无法创建或更新事件。当尝试更新或创建时,我得到的信息是“出了问题”。以下是我的heroku日志中的错误: 2015-10-23T13:38:50.014461+00:00 app[web.1]: (1.8ms) BEGIN 2015-10-23T13:38:50.039168+00:00 app[web.1]: (1.9ms) ROLLBACK 2015-10-23T13:38:50.043567+00:0
2015-10-23T13:38:50.014461+00:00 app[web.1]: (1.8ms) BEGIN
2015-10-23T13:38:50.039168+00:00 app[web.1]: (1.9ms) ROLLBACK
2015-10-23T13:38:50.043567+00:00 app[web.1]:
2015-10-23T13:38:50.043570+00:00 app[web.1]: TypeError (no implicit conversion of Array into String):
2015-10-23T13:38:50.043571+00:00 app[web.1]: app/controllers/events_controller.rb:19:in `create'
2015-10-23T13:38:50.043572+00:00 app[web.1]:
2015-10-23T13:38:50.043572+00:00 app[web.1]: 2015-10 23T13:38:50.030951+00:00 app[web.1]: SQL (2.4ms) INSERT INTO "events" ("name", "description", "picture", "datestart", "dateend", "timestart", "timeend", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id" [["name", "New Event w/Picture"], ["description", "adlkfjasdlkfjasjdkf\r\nadflkajsdfkajsdf\r\nadflkajdfa\r\ndfadf\r\nadfajsdfaf"], ["picture", "photo.jpg"], ["datestart", "2015-10-23"], ["dateend", "2015-10-23"], ["timestart", "2015-10-23 13:38:00.000000"], ["timeend", "2015-10-23 13:38:00.000000"], ["created_at", "2015-10-23 13:38:50.020179"], ["updated_at", "2015-10-23 13:38:50.020179"]]
2015-10-23T13:38:50.040280+00:00 app[web.1]: Completed 500 Internal Server Error in 696ms (ActiveRecord: 7.3ms)
WARNING: Toolbelt v3.42.20 update available.
当我对现有事件进行更新时,会出现相同的错误。但是,它引用了“更新”操作
以下是events_controller.rb文件中创建操作的代码:
def create
@event = Event.new(event_params)
if @event.save
flash[:success] = "Your event was created successfully!"
redirect_to events_path
else
render :new
end
end
def event_params
params.require(:event).permit(:name, :description, :datestart, :dateend, :timestart, :timeend, :cost, :picture)
end
下面是event.rb代码:
class Event < ActiveRecord::Base
default_scope { order('datestart ASC') }
belongs_to :user
has_many :regs
mount_uploader :picture, PictureUploader
validate :picture_size
private
def picture_size
if picture.size > 5.megabytes
errors.add(:picture, "should be less that 5MB")
end
end
end
class事件5.MB
错误。添加(:图片,“应小于5MB”)
结束
结束
结束
我可以在开发端毫无问题地运行应用程序(Cloud9)
任何帮助都会很有帮助。我不知道,但你试过了吗?:
def create
event_params[:description] = event_params[:description].to_s
@event = Event.new(event_params)
if @event.save
flash[:success] = "Your event was created successfully!"
redirect_to events_path
else
render :new
end
end
我知道这很难看,但这只是为了测试。在我看来,您在开发中使用SQLite,在生产中使用PostgreSQL,这可能会导致此问题
description参数最初是一个数组?如果是这样,将其显式转换为字符串可能会起作用。如果您正试图将另一个参数从数组转换为字符串,请尝试以这种方式进行转换,并查看它是否有效。我不确定。有意思。。。谢谢你的发帖 看起来问题不在于代码,而在于后端(可能是数据库列设置或其他)
调试 我看你已经修好了 如果类似的错误再次出现,您可以执行以下几项操作:
pgsql
与mysql
类似,但略有不同。如果您正在存储“描述”数据,那么在创建模式时最好使用t.text
carrierwave
,请注释掉mount\u uploader:picture,PictureUploader
&validate:picture\u size
行,这将阻止图像被处理,这可能是一个问题无论哪种方式,Heroku都可能出现一些小问题
尽管它是一个很棒的平台,但您必须记住,您需要一个生产数据库(它的数据不会与您的开发数据库相同),并且必须“预热”(如果您在免费层)您是否检查了您的参数并查看了它们的外观?您是否也发布了您的
事件
模型?我已在文章底部添加了事件模型的代码。@Cyzanfar我对此还是比较新的,我在哪里检查参数?我只需要在正确的方向上轻推一下。在保存之前在create方法中放置一个断点。一旦你创建了一个新的事件,你的应用程序就会挂起,你只需在控制台中键入paeans,就可以检查paeans的值。很可能是数据库。当它现在工作时,我真的没有任何东西使它工作。在我学习和研究这些问题的过程中,我有一个反复出现的主题,那就是我使用的数据库,用于dev和prod的不同数据库。