Ruby on rails 如何在视图中链接到模型方法的结果?

Ruby on rails 如何在视图中链接到模型方法的结果?,ruby-on-rails,Ruby On Rails,我的模型中有此方法: ## Finds invoice with next upcoming due date. ## def self.next_due where("due_date >= ? AND status = ?", Time.now, 'Open').order("due_date ASC").first ? where("due_date >= ?", Time.now).order("due_date ASC").first.due_date :

我的模型中有此方法:

  ## Finds invoice with next upcoming due date. ##
  def self.next_due
    where("due_date >= ? AND status = ?", Time.now, 'Open').order("due_date ASC").first ? where("due_date >= ?", Time.now).order("due_date ASC").first.due_date : ''
  end
这将返回下一张到期发票的到期日

我正在尝试将_链接到实际发票,但到目前为止还无法使其正常工作

我觉得自己像个白痴,因为我不能让一个简单的链接正常工作,而我的链接到现在为止都没有问题,我自己也不能很快解决

是否可以将此查询返回的发票存储为我可以从视图和链接调用的变量?如果没有,那么我将如何进行链接


谢谢。

这是因为您在到期日之前还了一张支票

class Invoice
  def self.next_due
    where("due_date >= ? AND status = ?", Time.now, 'Open').order("due_date ASC").first
  end
end
那么也许在一个助手里

def next_due_invoice_link
  invoice = Invoice.next_due
  return if invoice.blank?
  link_to invoice.due_date, invoice_path(invoice)
end

您可以执行以下操作:

def self.next_due # This is a Class method!
  where("due_date >= ? AND status = ?", Time.now, 'Open').order("due_date ASC").first.try(:due_date)
end
然后在视图中,您可以这样使用它:

link_to Invoice.next_due, your_path_helper
# Invoice model
def self.next_invoice
  where("due_date >= ? AND status = ?", Time.now, 'Open').order("due_date ASC").first
end

您的命名并不明确,我建议您做一些更改,例如:

link_to Invoice.next_due, your_path_helper
# Invoice model
def self.next_invoice
  where("due_date >= ? AND status = ?", Time.now, 'Open').order("due_date ASC").first
end
然后在您的视图中调用它:

- if next_invoice = Invoice.next_invoice
  = link_to next_invoice.due_date, your_path_helper

您好@j-dexx,谢谢您的回复。我试过了,遇到了我遇到的同一个问题,一个未定义的方法错误,这次它说“到期日”未定义。你有一个
到期日
字段吗?是的,我有一个到期日字段。错误来自“link\u to invoice.due\u date,invoice\u path(invoice)”部分,我不知道为什么。查询在rails控制台中工作,我可以在控制台中调用due_date属性,如果我删除了指向帮助器的链接和路径,那么invoice.due_date将返回due_日期,没有问题。我就是不能把它链接起来。谢谢!稍后我会尝试这个,因为我正在开发一个不同的特性分支。好的。我还是有麻烦。我必须为此定义自定义路径帮助程序吗?不,您说过“我正在尝试创建指向实际发票的链接”,请使用链接的第二个参数所需的路径(第一个参数=显示的文本,第二个参数=单击链接时要去的路径,第三个参数是可选的选项散列)。根据您定义路线的方式,您可以使用关联的路径帮助器。谢谢!它正在工作。如果在将来的某个时候,我希望从关联父对象的视图创建到同一发票的链接,我是否必须在父对象模型中的方法中定义一个新查询?