gpt4 book ai didi

ruby-on-rails - Rails 数据表添加 link_to

转载 作者:行者123 更新时间:2023-12-04 05:46:35 25 4
gpt4 key购买 nike

我正在使用 Railscast 的一种方法来远程访问数据表的表。

这是 workorders4_datatable.rb 中代码的开头:

class Workorders4Datatable

delegate :params, :h, :link_to, :number_to_currency, to: :@view

def initialize(view)
@view = view
end

def as_json(options = {})
{
sEcho: params[:sEcho].to_i,
iTotalRecords: Workorder.external.count,
iTotalDisplayRecords: workorders.external.total_entries,
aaData: data
}
end

private

def data
workorders.external.map do |workorder|
[
link_to(workorder.id, workorder),
h(workorder.parent.try(:id)),
h(workorder.description),
h(workorder.client.try(:client_name)),
h(workorder.woasset.try(:assetnum)),
h(workorder.type.try(:typecode)),
h(workorder.billmethod.try(:method_name)),
h(workorder.workgroup.try(:group_name)),
h(workorder.employee.try(:employee_full_name)),
h(workorder.wostatus.try(:statuscode)),
h(workorder.expenses.tobill.sum("quantity") * workorder.expenses.sum("unitcost")),
h(workorder.events.tobill.sum("hours")),
h(workorder.events.sum("hours")),
link_to('ADD Invoice', new_invoice_path(:workorder_id => workorder), :class => 'btn btn-primary')
]
end
end

除了这一行,其他都有效:

link_to('ADD Invoice', new_invoice_path(:workorder_id => workorder), :class => 'btn btn-primary')

它导致了这个错误:

NoMethodError - undefined method `new_invoice_path' for #<Workorders4Datatable:0x007f94513588a0>:

然而,以下内容在不同的 View 中有效:

<%= link_to 'ADD Invoice', new_invoice_path(:workorder_id => @workorder.id), :class => 'btn btn-primary' %>

有什么方法可以让它工作吗?

最佳答案

您是否尝试过将 new_invoice_path 替换为 @view.new_invoice_path?那可能行得通。原因是因为 new_invoice_path 应该在 view 的上下文中调用,但它是在 Workorders4Datatable 的上下文中调用的。

我过去曾将这种模式视为捷径:

def v
@view
end

v.new_invoice_path

关于ruby-on-rails - Rails 数据表添加 link_to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19190590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com