在表格上要求附件(回形针)

时间:2016-08-28 02:04:41

标签: ruby-on-rails ruby paperclip

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

说完了,我的问题是:

我计划使用Paperclip(和Paperclip)在我的应用程序中存储pdf(因为我希望pdf大约为0.5mb)。 Paperclip的github教程对我来说没有一件事情是明确的:

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

非常感谢,我自己无法解决这两个问题。

编辑:这是我试过的

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

附加文件的按钮就在那里,但它似乎没有用,文件也没有保存。

EDIT2:     按照建议的解决方案,现在我的服务器确实保存了我附加到表单的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

1 个答案:

答案 0 :(得分: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列实际添加到表中。

回形针的型号代码(例如,我使用A 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作为我的控制器,模型,表单等,因此如果您使用的是其他名称,则需要更改它。 如果您有问题,请发表评论,我会尽力帮助