通过paperclip在rails_admin中添加多张照片 - 没有路由匹配错误

时间:2014-08-07 14:02:56

标签: ruby-on-rails ruby-on-rails-4 paperclip

我将paperclip和rails_admin添加到我的项目中,以便能够附加多个图片。图片附在文章模型

class Article < ActiveRecord::Base
  has_many :comments
  has_and_belongs_to_many :categories
  has_attached_file :photo, :styles => { :small => "150x150> "},
                            :url  => "/assets/products/:id/:style/:basename.:extension",
                            :path => ":rails_root/public/assets/products/:id/:style/:basename.:extension"
  validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png']

  has_many :pictures, :dependent => :destroy
end

class Picture < ActiveRecord::Base
  belongs_to :article
  has_attached_file :image, 
    :path => ":rails_root/public/images/:id/:filename",
    :url  => "/images/:id/:filename"

  do_not_validate_attachment_file_type :image
end

我按照本教程启用了多次上传(使用html5) - Tutorial

所以,我创建了一个gem并编辑了以下内容

views/multiple_upload.html.haml

= simple_form_for(rails_admin.multiple_upload_url(@abstract_model.to_param), html: { multipart: true }) do |f|
  = f.input :article_id, :as => :hidden, :input_html => { :name => "article_id", :value => @object.id }
  = file_field_tag('article_pictures_file', multiple: true, name: "article[pictures_attributes][][file]")
  = f.submit :submit, value: 'Upload', name: 'Upload', :class => 'btn btn-primary'




**lib/rails_admin_multiple_upload.rb**

require "rails_admin_multiple_upload/engine"

module RailsAdminMultipleUpload
end

require 'rails_admin/config/actions'

module RailsAdmin
  module Config
    module Actions
      class MultipleUpload < Base
        RailsAdmin::Config::Actions.register(self)
        register_instance_option :member do
          true
        end

        register_instance_option :link_icon do
          'icon-upload'
        end

        register_instance_option :http_methods do
          [:get, :post]
        end

        register_instance_option :controller do
          Proc.new do
            @response = {}

            if request.post?
              @article = Article.find_by_id(params[:article_id])
              @article.update_attribute(:pictures_attributes, params[:article][:pictures_attributes])
            end

            render :action => @action.template_name
end
end
end
end
end
end

然后,我在我的应用中更改了rails_admin.rb:

RailsAdmin.config do |config|

  config.actions do
    dashboard                     # mandatory
    index                         # mandatory
    new

    **multiple_upload do
      only Article
    end**

    export
    bulk_delete
    show
    edit
    delete
    show_in_app
  end
end

当我进入/ admin面板并点击“多个上传文章”时,我收到此错误:

ActionController::UrlGenerationError at /article/16/multiple_upload
No route matches {:action=>"multiple_upload", :controller=>"rails_admin/main", :format=>nil, :id=>nil, :model_name=>"article"} missing required keys: [:id]

有人知道这里有什么不对吗?或者我应该使用不同的方式添加多图片添加功能?

THX

1 个答案:

答案 0 :(得分:0)

= simple_form_for(rails_admin.multiple_upload_url(@abstract_model.to_param, id: @object.id), html: { multipart: true }) do |f|