TypeError (без явного преобразования nil в String) ruby ​​на рельсах 5 - PullRequest
0 голосов
/ 06 октября 2018

Итак, у меня есть контроллер, который принимает JSON в качестве полезной нагрузки

def create
     @tournoi = Tournoi.new(payload: JSON.parse(params[:payload]))
    if @tournoi.save
      redirect_to root_url
        flash[:success] = "Your tournament bracket has been validated!"

json взят из редактируемой диаграммы js, я сохраняю JSON с XMLHttpRquest и formData:

 function save() {
      var tojs = myDiagram.model.toJSON();
      var json = JSON.stringify(tojs);

      var formData = new FormData();
      formData.append("payload", json);

  var request = new XMLHttpRequest();
  request.open("post", "http://localhost:3000/malesingle", true);
  request.send(formData);
                    }

JSON успешно вставлен в мой контроллер, я перенаправлен на целевую страницу TypeError в моем методе создания с моего контроллера tournois, я знаю, что моя полезная нагрузка равна нулю, прежде чем я ее сохраню, я не знаю, почему способ, которым я объявил @tournoi = Tournoi.new(payload: JSON.parse(params[:payload])) не гарантирует преобразование из nill в полезную нагрузку.

1 Ответ

0 голосов
/ 10 октября 2018

вы сделали неправильный способ отправки полезной нагрузки json на сервер рельсов.Таким образом, params - это не json, а строка json. Вы можете попытаться удалить эту строку

var json = JSON.stringify(tojs); 

из кода и добавить tojs в формданные напрямую

formData.append("payload", tojs);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...