[英]Get file and filename from carrierwave
我已成功將文件上傳到S3,現在我想將文件附加到電子郵件,因此可以使用Gmail API發送文件。 有些人建議調用方法.file
一樣,直接在這里
如您所見,您可以調用方法
<%= @page.form.file.filename %>
.file
直接來自表單。
這是我的mount uploader
類:
class Crm::LogEmailAttachment < Asset
belongs_to :owner, class_name: 'Crm::LogEmail'
mount_uploader :data, Crm::LogEmailAttachmentUploader
mount_base64_uploader :data, Crm::LogEmailAttachmentUploader
# default_scope -> {order("assets.order")}
def to_s
self.data.try(:file).try(:filename)
end
end
這是我的erb表格:
<div class="document-wrap">
<%= log_email.fields_for :crm_log_email_attachments do |a| %>
<%= a. file_field :data, input_html: {class: "form-control" , wrapper: 'field'}, label: false %>
<% end %>
</div>
然后我嘗試通過從params[:data]
調用.file
來獲取文件,它為#<ActionDispatch::Http::UploadedFile:0x007fc337322290>
返回未定義的方法file
,我的問題是如何獲取文件和文件名的路徑來自carrierwave
?
您應該先通過載波將數據保存到S3,然后再直接引用上載器對象,而不是引用參數ActionDispatch :: Http :: UploadedFile對象。 例如
object.data.file.filename
要檢索文件名,並
object.data.url
檢索關聯資產的S3 URL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.