как отправить двоичный файл в params и сохранить его в БД с помощью paperclip_database - PullRequest
0 голосов
/ 29 мая 2018

Извините за вопрос новичка.Я хочу использовать драгоценные камни paperclip и paperclip_database, чтобы прикреплять и сохранять файлы в моей базе данных.Но я застрял при отправке данных файла из представлений в контроллер.Я сделал все из этого и этого ресурсов.В результате у меня есть следующие модели:

class User < ActiveRecord::Base
  has_many :certificates, :dependent => :destroy
  accepts_nested_attributes_for :certificates, :allow_destroy => true
end
class Certificate < ActiveRecord::Base
  belongs_to :user

  attr_accessor :image
  has_attached_file :image,
                    :storage => :database,
                    :database_table => 'image_files',
                    :cascade_deletion => true
end

в контроллере

Users_controller
  def new
    @user = User.new
    @user.certificates.build
    ~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~
  end

  def create
    @user = User.new(params[:user])
    ~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~
  end
end

и моя форма просмотра:

<%= form_tag @user, method: :put, :html => { :multipart => true } do |f|%>
  <%= fields_for each_event_entry.certificates.first do |c| %>
    <tr>
      <th>Certificate</th>
      <td>
        <%= c.file_field :image %>
      </td>
    </tr>
  <% end %>
<% end %>

Но когда я прикрепляю файли попробуйте отправить, у меня есть только имя файла в параметрах:

{
 "user" => {"some"=>"params"}
 "certificate"=>{"image"=>"IMG_1642.JPG"}
 }

И сертификат сохраняется без вложенного файла.Любая помощь будет чрезвычайно ценится.

1 Ответ

0 голосов
/ 05 июля 2018

Наконец, я обнаружил проблему.

Похоже, что для формы "form_tag" не требуется атрибут: html, поэтому форма html должна выглядеть следующим образом:

<%= form_tag @user, :multipart => true do |f| %> 

В моем случае нет необходимости в методе: также.

Надеюсь, это кому-нибудь поможет.

...