首页 > 解决方案 > 通过 Ajax 将 activerecord 对象发送到控制器操作

问题描述

Rails 5.2

我想做的是,从一个视图中,将一个 Ajax 请求传递给一个带有 activerecord 对象的控制器。我正在做以下事情;

我有一个 activerecord 对象:@book,具有以下属性:

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

I have a view that includes a couple of frames, that displays several books, and when one of the books is selected, I would like to update the second frame with that book's information. 在这种情况下,我有以下 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
});

书籍控制器正在接收它,但是当我检查 params[:user] (通过从控制器方法将其输出到控制台)时,我看到它是以下字符串:

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

我正在尝试将其转换为哈希或对象,如下所示:

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

或者:

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

但是书回来了为零。有任何想法吗?

标签: javascriptruby-on-railsajax

解决方案


推荐阅读