我已成功将文件上传到S3,现在我想将文件附加到电子邮件中,因此我可以使用Gmail API发送该文件。有些人建议直接调用方法let listOptions: CGWindowListOption = .optionAll
,例如here
如您所见,您可以调用方法
.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
然后我尝试通过从<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>
调用.file
来获取文件,它会为params[:data]
返回未定义的方法file
,我的问题是如何才能获得该文件的路径来自#<ActionDispatch::Http::UploadedFile:0x007fc337322290>
的文件和文件名?
答案 0 :(得分:3)
您应该首先通过carrierwave将数据保存到S3,然后直接引用上传器对象,而不是引用params ActionDispatch :: Http :: UploadedFile对象。例如
object.data.file.filename
检索文件名,
object.data.url
检索关联资产的S3 URL。