Отправка объекта activerecord через Ajax в действие контроллера - PullRequest
0 голосов
/ 10 октября 2019
Rails 5.2

Я хотел бы, с точки зрения, передать Ajax-запрос контроллеру с объектом activerecord. Я делаю следующее:

У меня есть объект activerecord: @book со следующими атрибутами:

@book.author
@book.title
@book.publisher

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

$.ajaxSetup({
    headers: {
        'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
    }
});
$.ajax({
    type: "POST",
    url: "/books/5/",
    data: JSON.stringify({
        "book": <%= raw @book %>
    }),
    datavalue: 'html',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    remote: true
});

Контроллер books получает его, но когда я проверяю params [: user] (выводя его на консоль из метода controller)Я вижу, что это следующая строка:

{"author"=>"Joe Smith", "title"=>"My Book", "publisher"=>"Local Press"}

Я пытаюсь превратить это в хэш или объект, например:

book = JSON.parse(params[:book])

Или:

book = JSON.parse(book, object_class: OpenStruct)

Но книга возвращается как ноль. Есть идеи?

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