Ruby on rails 使用回形针上载多个文件
我用回形针上传多个文件时遇到问题 我的模特就是这样Ruby on rails 使用回形针上载多个文件,ruby-on-rails,ruby,paperclip,Ruby On Rails,Ruby,Paperclip,我用回形针上传多个文件时遇到问题 我的模特就是这样 slider has_many imgarrays imgarrays has_many imageobjects imageobjects have_attachment(as for paperclip) 我在接收单个图像并使用回形针将其保存到其他型号上时没有问题,但我不确定如何在多文件上载期间处理imgaraysparam返回的数组 以下是我的rails服务器日志: Started POST "/slider" for 127.0.
slider has_many imgarrays
imgarrays has_many imageobjects
imageobjects have_attachment(as for paperclip)
我在接收单个图像并使用回形针将其保存到其他型号上时没有问题,但我不确定如何在多文件上载期间处理imgarays
param返回的数组
以下是我的rails服务器日志:
Started POST "/slider" for 127.0.0.1 at 2012-07-23 10:14:17 +0800
Processing by SliderController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7HcHtSlOsU/bnxb9emhAsSl/GFBraIE6NxwijHl3REM=", "slider"=>{"question"=>"", "answer"=>"", "score"=>"", "industry_name"=>"",
"imgarrays"=>[#<ActionDispatch::Http::UploadedFile:0x007fb471e99f30 @original_filename="Icon.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"slider[imgarrays][]\"; filename=\"Icon.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/var/folders/2s/n9wb5x4534nfs1cbrlph32v00000gp/T/RackMultipart20120723-53499-1lyi4yf>>, #<ActionDispatch::Http::UploadedFile:0x007fb471e99dc8 @original_filename="Icon@2x.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"slider[imgarrays][]\"; filename=\"Icon@2x.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/var/folders/2s/n9wb5x4534nfs1cbrlph32v00000gp/T/RackMultipart20120723-53499-10lala2>>, #<ActionDispatch::Http::UploadedFile:0x007fb471e99d50 @original_filename="greenButton.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"slider[imgarrays][]\"; filename=\"greenButton.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<File:/var/folders/2s/n9wb5x4534nfs1cbrlph32v00000gp/T/RackMultipart20120723-53499-or2rdk>>]}, "commit"=>"Create!"}
Completed 500 Internal Server Error in 18ms
ActiveRecord::AssociationTypeMismatch (Imgarray(#70206507050500) expected, got ActionDispatch::Http::UploadedFile(#70206487229960)):
app/controllers/slider_controller.rb:12:in `new'
app/controllers/slider_controller.rb:12:in `create'
Rendered /Users/Kinnovate/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.1.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms)
Rendered /Users/Kinnovate/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.1.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.4ms)
Rendered /Users/Kinnovate/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.1.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (6.5ms)
2012年7月23日10:14:17+0800时,127.0.0.1版的“开始发布“/滑块”
通过SliderController处理#创建为HTML
参数:{“utf8”=>“✓", "真实性令牌“=>”7HcHtSlOsU/bnxb9emhAsSl/GFBraIE6NxwijHl3REM=“,“滑块”=>{“问题”=>,“答案”=>,“分数”=>,“行业名称”=>,
“imgarrays”=>
在18毫秒内完成500个内部服务器错误
ActiveRecord::AssociationTypeMismatch(应为imgaray(#7020650705500),获得ActionDispatch::Http::UploadedFile(#70206487229960)):
app/controllers/slider_controller.rb:12:in'new'
app/controllers/slider\u controller.rb:12:in'create'
Rendered/Users/Kinnovate/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.1.1/lib/action\u dispatch/middleware/templates/rescues//u trace.erb(1.4ms)
Rendered/Users/Kinnovate/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.1.1/lib/action\u dispatch/middleware/templates/rescues//u request\u and\u response.erb(1.4ms)
rescues/layout中的Rendered/Users/Kinnovate/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.1.1/lib/action\u dispatch/middleware/templates/rescues/diagnostics.erb(6.5ms)
滑块的new.html.erb
<div>
<%= form_for @slider ,:url=>"/slider" , :html => { :multipart => true } do |f| %>
<%= f.label :question , "question"%>
<%= f.text_field :question %> </br>
<%= f.label :answer , "answer array (comma seperated)"%>
<%= f.text_field :answer %> </br>
<%= f.label :score , "score"%>
<%= f.text_field :score %> </br>
<%= f.label :industry_name , "industry"%>
<%= f.text_field :industry_name %> </br>
<%= f.label :attachedimg , "image"%>
<%= f.file_field :imgarrays, :multiple =>:true %> </br>
<%= f.submit "Create", class: "btn btn-large btn-primary" %>
<% end %>
</div>
<%= link_to 'Cancel', slider_index_path %>
“/slider”,:html=>{:multipart=>true}do | f |%>
:真%>
以下是我使用回形针上传多个文件的代码:
我们可以使用嵌套属性或使用普通的easy方法来实现
以下代码显示了正常方法:
User.rb
有许多:映像,:依赖=>:销毁
Image.rb
是否已附加文件:avatar,:style=>{:medium=>“300x300>”}
属于:用户
users/views/new.html.erb
<%= form_for @user, :html => { :multipart => true } do |f| %>
......
....
<%= file_field_tag :avatar, multiple: true %>
<% end %>
就这样。图像已上载,这可能不是一个好方法,但它很有效。您不能使用while循环来迭代返回的数组吗?哦,伙计,这是一个非常简单的解决方案,谢谢!你能给我一个答案让我接受吗
if @user.save
# params[:avatar] will be an array.
# you can check total number of photos selected using params[:avatar].count
params[:avatar].each do |picture|
@user.images.create(:avatar=> picture)
# Don't forget to mention :avatar(field name)
end
end