0
我在理解after_save rails回調時遇到了問題。有我的模型片段:RoR:訪問在after_save回調中生成的頁面
after_save :log_creation
private
def log_creation
logger.info "RECEIVED => #{ self.name } - #{ self.value } - #{ self.id }"
path_to_url = url_for({ :host => "localhost:8080", :action=>"show", :controller=>"testing", :format =>"pdf", :id => self })
logger.info path_to_url
file = open(path_to_url, "r").read
logger.info file
end
在開發日誌中,我得到了前兩個logger.info的預期信息。第三個我不明白,因爲我收到一個404異常(ActiveRecord :: RecordNotFound)。
那麼,我在做什麼錯了?
PDF的生成工作正常(使用PDFkit),如果我評論after_save行並嘗試訪問該URL,那麼可以,但是當我嘗試在after_save上訪問它時,它不起作用,因爲我認爲它不合適。
這一切都是爲了發送一封附有PDF的電子郵件(附帶郵件程序)。它會下載PDF(通過受控)然後發送。
我不明白什麼是工作或不是,但不應該使用:id => self.id而不是:id => self? – mb14
@ mb14問題出在行'file = open(path_to_url,「r」)。read'。 url_for行工作正常 - 我在日誌中看到它,它是預期的。 – anders
你的'path_to_url'在你的日誌中看起來像什麼?可能只是一個相對地址問題。我認爲File.open適用於你的本地文件系統環境,所以如果你的路徑以「/」開始,你實際上試圖從文件系統的根目錄找到一個文件。尾隨的斜線也可能令人困惑。 –