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如果找不到,code>会发疯。然后,如果需要,您可以rescue ActiveRecord::RecordNotFound
显示消息,或者从处理程序获得更全局的rescue\u。等等,您确定在发送电子邮件时该客户端确实存在发票吗?在我看来,@invoice没有返回任何内容。。。因为@client.invoices.find_by(id:params[:id])不返回任何内容。{}
按钮通常在编辑器中正确格式化代码。为了便于阅读,我把它清理了一点。看起来好像找不到发票。如果未定义@invoice
,您可能需要显示一个“未找到”页面。是的,我知道,这就是问题所在,那么如何使@invoice可见?看来find_by
调用的结果失败了,因此可能记录丢失或参数[:id]
值不正确。从这里很难说。如果加载记录真的很重要,find_by如果找不到,code>会发疯。然后,如果需要,您可以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
的输出?