Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从datatables中的其他表添加可排序列_Ruby On Rails_Datatables_Jquery Datatables Rails - Fatal编程技术网

Ruby on rails 从datatables中的其他表添加可排序列

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实现数据表的迷你教程。桌子

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