【问题标题】:Ask for attachment on form (Paperclip)索取表格附件(回形针)
【发布时间】:2016-08-28 02:04:41
【问题描述】:

前言:我是 REAL 轨道新手。我正在使用它开发我的第一个 Web 应用程序,因此即使是基本概念对我来说也很难理解。

话虽如此,我的问题:

我打算使用 Paperclip(并且仅限 Paperclip)在我的应用程序中存储 pdf(因为我预计 pdf 大约为 0.5mb)。 Paperclip 的 github 上的教程对我来说并不清楚:

  • 如何在我的表单中询问(并实际保存)附件?

非常感谢,这两个问题我一个人真的解决不了。

编辑:这是我尝试过的

<div class="field">
  <%= f.label :pdf %>
  <%= f.file_field :pdf %>
</div>

附加文件的按钮在那里,但它似乎不起作用并且文件没有保存。

编辑2: 按照建议的解决方案,现在我的服务器确实保存了我附加到表单的 pdf。

现在我想了解为什么关联的 url(来自 pdf)将我直接发送到系统询问将 pdf 保存在哪里(也就是自动下载)的页面。这是代码的相关部分:

<td><%= (link_to 'Related file', task.pdf.url, :target => "_blank") if task.pdf.exists? %></td>

这位于 app/views/tasks/index.html.erb 中

【问题讨论】:

    标签: ruby-on-rails ruby paperclip


    【解决方案1】:

    将 pdf 附件添加到表格的迁移(在此示例中,我将附件 PDF 添加到 Documents 表格)应如下所示:

    class AddAttachmentPdfToDocuments < ActiveRecord::Migration
      def self.up
        change_table :documents do |t|
          t.attachment :pdf
        end
      end
    
      def self.down
        remove_attachment :documents, :pdf
      end
    end
    

    您需要在创建此迁移后运行rake db:migrate,以便将 pdf 列实际添加到表中。

    您的回形针模型代码(同样,我使用的是 documents 模型)应该如下所示:

    has_attached_file :pdf, :use_timestamp => false
    validates_attachment_content_type :pdf, :content_type => ['application/pdf', 'text/plain']
    

    要添加 pdf,您需要在表单中添加输入,例如,这是用于请求 pdf 附件的循环:

    <%= form_for @document do |f| %>
    
        <%= f.input :title, label: "Title" %>
    
        <%= f.input :pdf, label: "Upload document:" %>
    
        <%= f.button :submit %>
    
    <% end %>
    

    在您的控制器中(再次使用documents 作为控制器)您需要传递参数:pdf。您的私有方法如下所示:

    def documents_params
        params.require(:document).permit(:title, :pdf)
    end
    

    注意,我使用document 作为我的控制器、模型、表单等,所以如果您使用不同的名称,您需要更改它。 如果您有问题发表评论,我会尽力提供帮助

    【讨论】:

    • 确实做到了!我还没有完全掌握我所做的一切,但谢谢你,我会到达那里。编辑:还有一个问题:我的“视图”现在有一个指向我附加的 pdf 的 url 链接。唯一的问题是,当我点击它时,它会打开一个新标签,已经要求我保存 pdf。我怎样才能让它只显示给我,而不要求下载或保存?
    • 我不太确定你在问什么。您是否希望直接下载 pdf,而不是在新标签页中打开?
    • 恰恰相反,我希望它在新标签中打开,仅此而已。在它的实际形式中,它已经通过“保存文件”对话框打开,您可以在其中选择要保存的位置。
    • 您可以编辑您的问题并在您的视图文件中包含 pdf 的链接代码吗?
    • 完成了,等你查看:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多