我有一个可以向其中添加多个图像的表单。
<%= form_with(model: photo, remote: true, multipart: true) do |form| %>
<input type="file" name="images" accept="image/png, image/jpeg" multiple>
<%= form.submit %>
<% end %>
我想通过参数将多个图像传递给我的控制器方法。通过参数上传到方法后,我想循环浏览并创建这样的链接。
def create
Rails.logger.debug "#{params[:images]}"
params[:images].each do |image|
@photo = current_user.photos.new(photo_params)
@value = Cloudinary::Uploader.upload(params[:image], :categorization => "google_tagging", :auto_tagging => 0.7)
@photo.link = @value['secure_url']
@photo.tag_list = @value['tags']
@photo.save
end
redirect_to root_path
end
该方法返回一个文件并说 方法“每个”未定义。
如何传递上传的所有图像的数组?
答案 0 :(得分:2)
您需要向图像中添加数组“ []”的形式,如下所示(根据您自己的逻辑进行更改):
<%= form_with(model: photo, remote: true, multipart: true) do |form| %>
<% (1..5).each do %>
<input type="file" name="images[]" accept="image/png, image/jpeg" multiple>
<% end %>
<%= form.submit %>
<% end %>
更新: 感谢@SRack指出数字索引不是必需的,iamges [0],images [1]可以工作,但实际上,一种形式的参数“ images []”就足够了。