我已经构建了我的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: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文件中create动作的代码:
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
我可以在开发方面运行应用程序而没有任何问题(Cloud9)。
任何帮助都会有所帮助。
答案 0 :(得分:1)
有趣...感谢发帖!
看起来问题不在于您的代码,在后端更多的东西(可能是数据库列设置或其他东西)。
<强>调试强>
我看到你修好了。
如果再次出现此类错误,您可以执行以下操作:
重新启动服务器(可能存在缓存问题或其他问题)。我相信您可以使用heroku restart -a app_name
检查您的数据库 - pgsql
与mysql
相似但略有不同。如果你要存储&#34;描述&#34;数据,您在创建架构时最好使用t.text
删除图片上传 - 如果您正在使用carrierwave
,请注释掉mount_uploader :picture, PictureUploader
&amp; validate :picture_size
行 - 这会阻止图像处理,这可能是一个问题。
无论哪种方式,使用Heroku,都会出现一些小问题。
虽然它是一个很棒的平台,但您必须记住,您需要一个生产数据库(并且它不会拥有与您的开发数据库相同的数据),以及必须使用&#34;热身&#34; (如果你在免费等级上)
答案 1 :(得分:0)
我不知道,但你试过吗?:
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参数最初是一个数组?如果是这样,显式将其转换为String可能会起作用。如果您尝试将其从Array转换为String的其他参数,请尝试以这种方式进行操作,看看它是否有效。我不确定。