簡體   English   中英

僅有Heroku錯誤:Heroku上的Rails中有未定義的方法`write_from_user',但一切在dev中都有效

[英]Heroku only error: undefined method `write_from_user' in Rails on Heroku, but everything works in dev

當我嘗試在Heroku產品環境中使用強參數提交表單時,發生錯誤。 應用程序日志顯示以下內容:

2016-11-01T05:20:15.948227+00:00 app[web.1]: [7a7a60bf-b9bf-404d-890e-3692ba99bad0] Completed 500 Internal Server Error in 12ms (ActiveRecord: 2.8ms)
2016-11-01T05:20:15.949267+00:00 app[web.1]: [7a7a60bf-b9bf-404d-890e-3692ba99bad0]   
2016-11-01T05:20:15.949316+00:00 app[web.1]: [7a7a60bf-b9bf-404d-890e-3692ba99bad0] NoMethodError (undefined method `write_from_user' for nil:NilClass):
2016-11-01T05:20:15.949353+00:00 app[web.1]: [7a7a60bf-b9bf-404d-890e-3692ba99bad0]   
2016-11-01T05:20:15.949490+00:00 app[web.1]: [7a7a60bf-b9bf-404d-890e-3692ba99bad0] app/controllers/gdrs_controller.rb:12:in `create'

我在帶有postgres db的dev和prod中使用Rails5。 一切都可以在dev中完美運行。 Heroku傳遞url參數的方式是否有所不同?

這是來自create動作的代碼:

def create
  @des = Designer.where(email: Rails.application.secrets.design_lead_email)
  @gdr = Gdr.new(secure_params)
  @gdr[:uuid] = SecureRandom.hex(5)
  @gdr.designer = @des
  @gdr[:status] = "Queued"
  if @gdr.save!
    VisitorMailer.gdr_created_email(@gdr).deliver_now
    DesignerMailer.gdr_created_email(@gdr).deliver_now
    redirect_to gdr_url(@gdr[:uuid])
  else
    render :new
  end
end

和secure_params動作:

private

def secure_params
    params.require(:gdr).permit(:uuid, :client_name, :email, :dept, :ext, :cost_centre, :activity_type, :project_name, :description, :size, :quantity, :colour, :quote, :rush, :rush_desc, :proof_date, :print_date, :delivery_instructions, :reprint, :old_gl, :server_path_to_files, :activity_code) 
end

我正在使用Devise創建Designer模型。

似乎您正在嘗試在nil object上調用write_from_user 使用類似your_object.try(: write_from_user)來處理nil。 如果可以發布控制器代碼,將會更加清楚。

修復! 我意識到創建操作失敗,因為我沒有正確配置actionmailer。 我認為這是通過ddatabas提交中途崩潰的原因。

經驗教訓。 全局錯誤日志記錄現在已打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM