我将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
答案 0 :(得分:0)
= simple_form_for(rails_admin.multiple_upload_url(@abstract_model.to_param, id: @object.id), html: { multipart: true }) do |f|