Ruby on rails 从datatables中的其他表添加可排序列
我正在学习一个关于用Rails实现数据表的迷你教程。桌子Ruby on rails 从datatables中的其他表添加可排序列,ruby-on-rails,datatables,jquery-datatables-rails,Ruby On Rails,Datatables,Jquery Datatables Rails,我正在学习一个关于用Rails实现数据表的迷你教程。桌子 Rails 5.2 datatables class BlogDatatable
Rails 5.2
datatables
class BlogDatatable
我真正想为列user显示的是用户电子邮件,但用户电子邮件在表Users中。我如何使用datatables实现这一点,并且仍然能够根据电子邮件而不是blogs表中的用户id进行排序 试试这个方法:
假设您将路由设置为resources:blogs
index.html.erb
中的表将
class BlogDatatable < AjaxDatatablesRails::ActiveRecord
def view_columns
@view_columns ||= {
id: { source: "Blog.id" },
user: { source: "Blog.user_id"}
title: { source: "Blog.title" },
}
end
def data
records.map do |record|
{
id: record.id,
title: record.title,
DT_RowId: record.id,
}
end
end
def get_raw_records
Blog.all
end
end
在博客中添加index.json.jbuilder
json.extract! blog, :id, :title, :user_id, :created_at, :updated_at
json.user_email blog.user.email
json.url blog_url(blog, format: :json)
这将通过从索引操作中获取@blogs实例变量,使用json对象创建datatable
对于如何在用户表中的用户列中显示电子邮件的问题,假设您使用blogs表引用了用户表,
即
在您的博客模型中
你应该有一个协会:
json.set! :data do
json.array! @blogs do |blog|
json.partial! 'blogs/blog', blog: blog
json.url "
#{link_to 'Show', blog }
#{link_to 'Edit', edit_blog_path(blog)}
#{link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' }}
"
end
end
现在您将通过
blog.user.email
获得用户电子邮件,您有了一个更好的选择,可以在中使用json和jbuilder实现Datatablerails@AbhishekAravindan你能在上面扩展吗?我想你需要一个关于博客的数据表,你需要它在博客索引页面上…是吗?是的,这将用于索引视图您是否安装了gem'jquery datatables'
?如果可以,我为什么要这么做:从controller方法呈现json:{data:@blogdata}
json.set! :data do
json.array! @blogs do |blog|
json.partial! 'blogs/blog', blog: blog
json.url "
#{link_to 'Show', blog }
#{link_to 'Edit', edit_blog_path(blog)}
#{link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' }}
"
end
end
belongs_to :user