Итерация по массиву по параметрам в рельсах? - PullRequest
0 голосов
/ 11 декабря 2018

Я застрял в очень простой проблеме.Я получаю массив параметров в моем представлении и хочу перебрать значения.

Это распечатка моих параметров:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"dfOQVuXlQriII3akiGCSuMIf4i2B8c1/OX02nd6Dhy0ZKzHkhiXxlcXKCJAMFHw0vhtNKKVYuLHFo22LGsy6UQ==", "album"=>{"name"=>"asdasd", "photos_media"=>["[{\"id\":\"a245b724845f447eb63dfbaa3fba173669b55fcdf7fb55fb634707ff0c1c\",\"filename\":\"BWT_eUmU.jfif\",\"content_type\":\"image/jpeg\",\"size\":56060},{\"id\":\"1bfb4188a126079f5069c5204f8df1c7169d0464f488385ef1f8d081fcda\",\"filename\":\"drafts.png\",\"content_type\":\"image/png\",\"size\":6029}]"]}, "commit"=>"Save Album"}

Мои альбомы_параметры такие:

  def album_params
    params.require(:album).permit(:name,  photos_media: [])
  end

И моя форма:

<%= form_for @album do |f| %>
  <div class="col-9">
    <div class="form-group row" >
      <div class="col-6">
        <label for="">Name:</label>
        <%= f.text_field :name %>
      </div>
    </div>
  </div>
  <div class="col-9">
    <div class="form-group row" >
      <div>
        <div class="progress" id='progress-bar' style='display:none;'>
          <div class="progress-bar progress-bar-striped active" role="progressbar" style="width: 0%"><h6>Loading...</h6>
            <span class="sr-only" id='progress-bar-text'></span>
          </div>
        </div>  
      </div>
      <div class="col-6">
        <label for="">Add or drag photos here:</label>
        <%= f.attachment_field :photos_media, multiple: true, direct: true, presigned: true %>
      </div>    
    </div>
  </div>

Как я могу перебрать photos_media?Если я сделаю на нем печать следующим образом:

 logger.debug("******SIZE*** #{album_params[:photos_media].size} ")

Это говорит о том, что размер равен 1. Как большая строка.

Что я делаю не так?

1 Ответ

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

Как говорит Вайлиса, photo_media содержит Array с одним элементом, который является string:

"photos_media"=>["[{\"id\":\"a245b724845f447eb63dfbaa3fba173669b55fcdf7fb55fb634707ff0c1c\",\"filename\":\"BWT_eUmU.jfif\",\"content_type\":\"image/jpeg\",\"size\":56060},{\"id\":\"1bfb4188a126079f5069c5204f8df1c7169d0464f488385ef1f8d081fcda\",\"filename\":\"drafts.png\",\"content_type\":\"image/png\",\"size\":6029}]"]

В частности, string является JSON string.

Чтобы проанализировать это на бэкэнде, вы можете попробовать:

@photo_media_ary = JSON.parse(album_params[:album][:photos_media][0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...