js frontend fetch () отправляет на рельсы backend filepath к файлу ошибка - PullRequest
0 голосов
/ 11 марта 2020

Я отправляю запрос javascript fetch () на конечную точку rails. Я использую Active Storage для сохранения изображения с моего локального компьютера. Браузер не разрешает полный путь к файлу. В интерфейсе рельсов с erb я могу использовать изображение и просматривать его в виде рельсов. Переход к JavaScript front-end и публикация в rails API не так легко сделать. Я знаю с отладчиком и binding.pry, что происходит в коде. На стороне js путь к файлу скрывается за поддельным путем. Таким образом, когда я ударяю по рельсам, я получаю именно это. Я использую активную память и в моей модели есть has_one_attached: file

FrontEnd

index.html <input type="file" id="myfile" name="myfile">

     //this will hit the endpoint
        fetch(BASE_URL + "/" + "pokemons/test", {
            method: 'post',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },

            body: JSON.stringify(obj)
        }).then( response => response.json()
    ) 

BackEnd

#=>model.rb 
class Pokemon < ApplicationRecord 
  has_one_attached :file 
#=> backend rails terminal in pry 

    {"nickname"=>"first_try", "species"=>"fictional", "trainer_id"=>1, "file"=>"C:\\fakepath\\WIN_20200205_00_06_57_Pro.jpg", "controller"=>"pokemons", "action"=>"test", "pokemon"=>{"species"=>"fictional", "nickname"=>"first_try", "trainer_id"=>1}} 

terminal_errors: 

ActiveSupport::MessageVerifier::InvalidSignature (ActiveSupport::MessageVerifier::InvalidSignature):

`

1 Ответ

0 голосов
/ 12 марта 2020

Это наполовину ответ на мою проблему. Он начинается с html и браузера, пытающегося защитить мои файлы на моем компьютере, и заканчивается соответствующей html формой ввода для приема и загрузки файлов. правильная форма

Теперь, когда моя форма html обновлена ​​для этой конкретной цели c, и даже при правильном действии для моей конечной точки рельсов я могу сохранить свой файл изображения в Active Storage

вот мой html

  <div>
    <label for="file">Choose a file</label>
    <input type="file" id="file" name="file"> 
    <input type="text" id="nickname" name="nickname"> 
    <input type="text" id="species" name="species"> 
    <input type="number" id="trainer_id" name="trainer_id">
  </div>
  <div>
    <button id="test">Send the file</button>
  </div>
</form>``` 

Now that my html is handling the posting action to my rails API I just need a way to open the file and view it. 

...