我需要允许我的用户将Word文档(.doc文件)上传到我的应用程序。图片和PDF工作正常,但当我尝试上传文档时,我得到了:
undefined method `documents_path'
这是我的Document.rb文件中的代码。
validates :title, presence: true
validates :file,
attachment_content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif", "application/pdf", 'application/msword','applicationvnd.ms-word','applicaiton/vnd.openxmlformats-officedocument.wordprocessingm1.document', 'text/plain']},
attachment_size: { less_than: 5.megabytes }
has_attached_file :file, styles: {
thumb: '100x100>',
square: '200x200#',
medium: '350x350>',
pdf_preview: '600x600>'}, processors: [:thumbnail]
以下是我的观点:
<%= simple_form_for(@document, multipart: true) do |f| %>
<%= f.input :title, :label => "Name of Document" %>
<%= f.input :hotel_id %>
<%= f.file_field :file, :label => "Upload Document" %>
<%= f.submit 'Submit', :class => "btn btn-primary" %>
<% end %>
我的路线:
resources :hotels do
resources :advertisers
resources :documents
end
答案 0 :(得分:0)
因为您传递了@document,这是一个Document,所以rails会查找documents_path的路由,因为您已经将它嵌套在酒店内,所以该路由不存在。您还需要指定酒店:
<%= simple_form_for([@hotel, @document], multipart: true) do |f| %>
...
记得定义@hotel
答案 1 :(得分:0)
可能有点晚了,但在遇到同样的问题后,我找到了一个对我有用的解决方案。只需将以下内容放入名为(或创建)config/initializers/mime_types.rb
的文档中Mime::Type.register "application/vnd.openxmlformats-officedocument.wordprocessingml.document", :docx
并且 docx 上传应该与引用的 content_type 一起使用。
现在,如果有人有兴趣像我一样只上传 pdf、doc 和 docx,只需将以下内容放入您的模型中 >
validates_attachment_content_type :your_column_name, :content_type => ['application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document']