Ruby on rails 未定义的方法'def#u delegator';对于Datatable:Class

Ruby on rails 未定义的方法'def#u delegator';对于Datatable:Class,ruby-on-rails,Ruby On Rails,我已经构建了一个datatable,并尝试在我的datatable.rb中使用link_to和_pathhelper。当使用def_delegator时,我得到一个“undefined method”错误。根据这一点,它应该起作用。为什么我不能使用def_delegator datatable.rb: class NetworkDatatable < AjaxDatatablesRails::ActiveRecord def_delegator :@view, :link_to

我已经构建了一个datatable,并尝试在我的datatable.rb中使用link_to和_pathhelper。当使用def_delegator时,我得到一个“undefined method”错误。根据这一点,它应该起作用。为什么我不能使用def_delegator

datatable.rb:

class NetworkDatatable < AjaxDatatablesRails::ActiveRecord


  def_delegator :@view, :link_to
  def_delegator :@view, :network_path


  def view_columns
    @view_columns ||= {
       network: { source: "Network.network"},
       comment: { source: "Network.comment"}
    }
  end

  def data
    records.map do |record|
      {  
         network: link_to(record.id, "#", network_path(record.id), :onclick => "display_dialog(); return(false);"),
         comment: record.comment
      }
    end
  end

  def get_raw_records
     Network.all
  end

end
class NetworkDatatable“display_dialog();return(false);”,
注释:record.comment
}
结束
结束
def获取原始记录
网络,全部
结束
结束
错误:

Completed 500 Internal Server Error in 9ms (ActiveRecord: 0.0ms)



NoMethodError (undefined method `def_delegator' for NetworkDatatable:Class):

app/datatables/network_datatable.rb:4:in `<class:NetworkDatatable>'
app/datatables/network_datatable.rb:1:in `<top (required)>'
在9毫秒内完成500个内部服务器错误(ActiveRecord:0.0毫秒)
NoMethodError(NetworkDatatable:Class的未定义方法“def_delegator”):
app/datatables/network\u datatable.rb:4:in`'
app/datatables/network\u datatable.rb:1:in`'

def_delegator
是类上的一个方法

要使用它,您必须执行以下操作:

require 'forwardable'

class NetworkDatatable < AjaxDatatablesRails::ActiveRecord
  extend Forwardable

  def_delegator :@view, :link_to

end
要求“可转发”
类NetworkDatatable
在Ruby的标准库模块中定义了
def_forwardable
方法,因此类需要扩展模块才能使用它。在ajax datatables rails项目的一节中有一个此方法的示例

require 'forwardable'

class NetworkDatatable < AjaxDatatablesRails::ActiveRecord
  extend Forwardable

  def_delegator :@view, :link_to
  def_delegator :@view, :network_path

end
要求“可转发”
类NetworkDatatable
或许可以尝试以下方法

class NetworkDatatable < AjaxDatatablesRails::ActiveRecord
  delegate :link_to, :network_path, to: :@view
end
可转发的def#u委托人
复数(ruby标准库)

模块#委托
(仅限导轨)


您在扩展中有输入错误;]
# def_delegator :target, :method
# def_delegators :target, :method1, :method2, ..., :method_n
# delegate :method1, :method2, ..., :method_n, to: :target