Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 我的发票链接返回零_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 我的发票链接返回零

Ruby on rails 我的发票链接返回零,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,当用户单击“发送发票”时,发票显示链接将发送到客户的电子邮件。但是,每次单击“发送”时都会出现此错误 "undefined method `id' for nil:NilClass" 电子邮件查看 <h3>Hi <%= @client.try(:first_name) %></h3> <p>Click the link below to view invoice</p> <%= link_to 'INVOICE', edi

当用户单击“发送发票”时,发票显示链接将发送到客户的电子邮件。但是,每次单击“发送”时都会出现此错误

"undefined method `id' for nil:NilClass" 
电子邮件查看

<h3>Hi <%= @client.try(:first_name) %></h3>

<p>Click the link below to view invoice</p>

<%= link_to 'INVOICE', edit_invoice_url(@invoice.id) %>
发送发票链接

<%= link_to 'send', invoice_path(@invoice), method: :patch %>

可能是因为
find\u by
finder需要一个用于正确SQL查询的属性

如果您想按id查找实例,则必须使用
find
方法

例如:

> Box.find_by(3)
=> Box Load (3.1ms)  SELECT  "boxes".* FROM "boxes" WHERE (3) LIMIT 1
   PG::DatatypeMismatch: ERROR:  argument of WHERE must be type boolean, not type integer

Box.find_by(id:3)
将返回一个类似
Box.find(3)

的对象(如果存在)。这可能是因为
find_by
finder需要一个用于正确SQL查询的属性

如果您想按id查找实例,则必须使用
find
方法

例如:

> Box.find_by(3)
=> Box Load (3.1ms)  SELECT  "boxes".* FROM "boxes" WHERE (3) LIMIT 1
   PG::DatatypeMismatch: ERROR:  argument of WHERE must be type boolean, not type integer

Box.find_by(id:3)
将返回类似
Box.find(3)

的对象(如果存在)。
{}
按钮通常在编辑器中正确设置代码格式。为了便于阅读,我把它清理了一点。看起来好像找不到发票。如果未定义
@invoice
,您可能需要显示一个“未找到”页面。是的,我知道,这就是问题所在,那么如何使@invoice可见?看来
find_by
调用的结果失败了,因此可能记录丢失或
参数[:id]
值不正确。从这里很难说。如果加载记录真的很重要,
find_by会发疯。然后,如果需要,您可以
rescue ActiveRecord::RecordNotFound
显示消息,或者从
处理程序获得更全局的
rescue\u。等等,您确定在发送电子邮件时该客户端确实存在发票吗?在我看来,@invoice没有返回任何内容。。。因为@client.invoices.find_by(id:params[:id])不返回任何内容。
{}
按钮通常在编辑器中正确格式化代码。为了便于阅读,我把它清理了一点。看起来好像找不到发票。如果未定义
@invoice
,您可能需要显示一个“未找到”页面。是的,我知道,这就是问题所在,那么如何使@invoice可见?看来
find_by
调用的结果失败了,因此可能记录丢失或
参数[:id]
值不正确。从这里很难说。如果加载记录真的很重要,
find_by会发疯。然后,如果需要,您可以
rescue ActiveRecord::RecordNotFound
显示消息,或者从
处理程序获得更全局的
rescue\u。等等,您确定在发送电子邮件时该客户端确实存在发票吗?在我看来,@invoice没有返回任何内容。。。因为@client.invoices.find_by(id:params[:id])不返回任何内容。没有任何路由匹配{:action=>“edit”,:controller=>“invoices”,:format=>nil,:id=>nil}缺少必需的键:[:id]这就是我每次尝试你的方法时得到的@esergion这就是我每次尝试你的方法时得到的@esergionsorry,有时候需要睡觉。。您能否显示
rake routes | grep invoice
的输出?没有路由匹配{:action=>“edit”,:controller=>“invoices”,:format=>nil,:id=>nil}缺少所需的键:[:id]这就是我每次尝试你的方法时得到的@esergion这就是我每次尝试你的方法时得到的@esergionsorry,有时候需要睡觉。。您能否显示
rake routes | grep invoice
的输出?