Rail 5.2
datatables
在我的views / books / index.html.slim中,我正在从另一个MVC加载部分内容,如下所示:
= render partial: 'authors/index', :locals => {:author => @book.author}
在我的views / authors / _index.html中,我具有以下内容:
.....
table.table-striped.table-bordered.table-hover.nowrap#AuthorsIndex.display
.....
javascript:
$('#AuthorsIndex').DataTable({
ajax: '/authors',
columns: [
{title: 'Publish Date', data: 'created_at'},
{title: 'Publisher', data: 'publisher'},
{title: 'Title', data: 'title'},
]
});
而且,在我的controllers / authors_controllers.rb中,我具有以下内容:
def index
@authors = Author.where(author: "John Doe")
render json: { data: @authors }
end
当我运行它时,authors表正确显示。问题在于作者名称在控制器操作中是硬编码的。我的_index部分正在接收作者名称,但是作为我正在进行的Ajax调用的一部分,如何将其发送到作者控制器? Ajax / Java脚本的新手。
答案 0 :(得分:1)
我没有安装必要的工具来对此进行测试,但是jQuery DataTable文档说您可以通过ajax.data
选项提供自定义数据。
通过
ajax.data
选项,可以将其他数据添加到 请求,或在需要时修改要提交的数据对象。...
作为对象,
ajax.data
选项用于扩展数据 DataTables内部构造以提交给服务器的对象。 这提供了一种添加其他静态参数的简便方法 要发送到服务器的数据。用于动态计算 值,请使用ajax.data
作为函数(请参见下文)。
该文档还提供了示例方案,并进一步详细介绍了可以提供的内容。
$('#AuthorsIndex').DataTable({
ajax: {
url: '/authors',
data: {author: '<%= j author %>'}
},
columns: [
{title: 'Publish Date', data: 'created_at'},
{title: 'Publisher', data: 'publisher'},
{title: 'Title', data: 'title'}
]
});
然后在控制器中:
def index
@authors = Author.where(author: params[:author])
render json: { data: @authors }
end
答案 1 :(得分:1)
怎么样
#_index.html
javascript:
$('#AuthorsIndex').DataTable({
ajax: '/authors?author=<%= author %>',
columns: [
{title: 'Publish Date', data: 'created_at'},
{title: 'Publisher', data: 'publisher'},
{title: 'Title', data: 'title'},
]
});
#authors_controllers.rb
def index
@authors = Author.where(author: params[:author])
render json: { data: @authors }
end