Рельсовая скрепка и тип документа - PullRequest
0 голосов
/ 13 декабря 2018

в моем приложении rails пользователи могут загружать документы (pdf, png, doc т.е. ...), но их можно разделить на несколько категорий (для бизнес-правил).Например, тип 1 - это «удостоверение личности», тип 2 - это «резюме» ... то есть. С помощью скрепки я создаю модель и контроллер (и таблицу БД) для хранения этих документов, и я добавил пользовательский «typedoc» (целое число)) Я хочу установить поле typedoc с целым числом в зависимости от загруженного файла "type" ...

В связи с этим, я повторяю этот код ниже для каждого "type".Как я могу обновить настраиваемое поле в таблице документов для каждого типа?Как я могу передать typedoc var в контроллер для обновления?

Заранее спасибо

    <%= form_for @user, url: user_documents_path(@user) , method: 'post', 
    html: {multipart: true} do |f| %> 

                        <div class="row">
                            <div class="col-md-4 form-group">
                                <span class="btn btn-default btn-file">
                                    <i class="fa fa-cloud-upload" aria- 
   hidden="true"></i> Choose doc 1
                                        <%= file_field_tag "documents[]", 
    type: :file, multiple: true %>

                                </span>
                            </div>                                 

                            <div class="col-md-4 body ">    
                                <%= f.submit "Add id card", class: "btn 
    btn-form" %>                                              
                            </div>
                            <div class="col-md-4 form-group" 
    id="documents"><%= render 'documents/documents_list' %></div>
                        </div>
                    <% end %>  

...

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Насколько я понимаю, у вас есть разные кнопки отправки для каждого типа?Мы можем видеть <%= f.submit "Add id card", class: "btn btn-form" %> в коде.Предполагая, что есть и другие кнопки с таким же соглашением (<%= f.submit "Add avatar", class: "btn btn-form" %>?), Тогда мы сможем использовать поле params[:commit], чтобы установить typedoc.

params [: commit] будет равнотекст кнопки отправки используется.Затем в контроллере мы можем сопоставить это с необходимым целым числом.Например: params [: commit] = "Добавить удостоверение личности", затем typedoc = 0.

Это также будет работать, если каждая кнопка отправки находится в своей форме.Параметр :commit все еще будет установлен.

0 голосов
/ 13 декабря 2018

Вы можете передать typedoc с URL-адресом для этой формы

, например, если пользователь щелкнет ссылку upload id_card, тогда вы можете передать его как

new_user_document_path(typedoc: 1)

И передать typedoc в форме динамически -

<%= form_for @user, url: user_documents_path(@user) , method: 'post', 
  html: {multipart: true} do |f| %> 
  <div class="row">
    <div class="col-md-4 form-group">
      <span class="btn btn-default btn-file">
      <i class="fa fa-cloud-upload" aria- 
        hidden="true"></i> Choose doc 1
        <%= f.file_field :documents, multiple: true, name: "user[documents][]"%>
      </span>
    </div>
    <!-- set value accordinly if you according to type of document  eg: -type 1 is "id card", type 2 is "resume"... ie. -->
    <%= f.hidden_field :typedoc, value: params[:typedoc]%> 
    <div class="col-md-4 body ">    
      <%= f.submit "Add id card", class: "btn 
        btn-form" %>                                              
    </div>
    <div class="col-md-4 form-group" 
      id="documents"><%= render 'documents/documents_list' %></div>
  </div>
<% end %> 
...