Как получить атрибут имени храма в Angular 5 для соответствия атрибуту вложения Rails 5 - PullRequest
0 голосов
/ 28 мая 2018

Я работаю над приложением, использующим внешний интерфейс Angular 5 и внутренний сервер Rails 5.Оба API-интерфейса, которые взаимодействуют через JSON.Далее, для загрузки я использую драгоценный камень Shrine с Uppy.Для загрузки и запуска я следовал этим двум урокам: https://github.com/shrinerb/shrine-tus-demo, https://github.com/shrinerb/shrine/wiki/Adding-Resumable-Uploads

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

# models/movie.rb

class Movie < Sequel::Model
  include VideoUploader::Attachment.new(:video)
end

должно соответствовать атрибуту имени из этого:

<div class="form-group">
  <input type="hidden" name="movie[video]" value="<%= @movie.cached_video_data %>" class="upload-hidden">
  <input type="file" name="movie[video]" class="upload-file">
</div>

Поскольку я не использую внешний интерфейс Rails, данные не так легко передаются,Есть ли способ примирить их?Я попытался передать следующее в Rails API в качестве значения атрибутов имени:

name="movie[video]"
name="video"

Я даже попытался отправить значения JSON, такие как:

name="{
  "id":"http://endpoint.com/files/226eed1388bbd1b7f029897ad2b86f16",
  "storage":"cache",
  "metadata":{
    "filename":"SampleVideo_720x480_1mb.mp4",
    "size":1057149,
    "mime_type":"video/mp4"
  }
}"

Поскольку это соответствует тому же JSONотформатировать, когда я могу запустить movie.video в консоли rails.

Можно ли как-нибудь это сделать?

РЕДАКТИРОВАТЬ:

Хорошо, я задал не тот вопрос,Извините, это мой первый проект, который не следует учебнику.Я потратил много времени, пытаясь заставить эту работу:

name="{
  "movie": {
    "video": {
      "id":"http://endpoint.com/files/226eed1388bbd1b7f029897ad2b86f16",
      "storage":"cache",
      "metadata":{
        "filename":"SampleVideo_720x480_1mb.mp4",
        "size":1057149,
        "mime_type":"video/mp4"
      }
    }
  }
}"

, прежде чем понял, что данные отправляются через tus-js-client и tus-server.Таким образом, правильный вопрос должен заключаться в том, как отправить правильный атрибут имени в клиент tus-js, чтобы его можно было отправить серверу tus и, наконец, передать в приложение Rails.Для получения дополнительной информации о бэкэнде, вот параметры создания и фильма:

def create
    movie = Movie.new(movie_params)

                if movie.save
                        render json: movie, status: 201
                else
                        render json: { errors: movie.errors }, status: 422
                end
        end

private

                def movie_params
                #       params.permit(:title, :year, :plot, :video_data)
                       params.require(:movie).permit(video: [metadata: [:title, :year, :plot]])
                #       params.require(:movie).permit!
                end

Кроме того, для отправки этой информации я использую встроенную отправку Uppy.Это исключает Angular обычные методы представления и, следовательно, отправляется через tus-js-client (я думаю).Если информация что-то значит, я потратил довольно много времени, пытаясь всеми способами пытаться передать атрибут имени, чтобы он соответствовал атрибуту вложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...