Rails5,没有一个数组方法在局部视图中工作。如果收件人列是一个数组:
<%= @mail.recipients.first %>
带来:
ActionView::Template::Error (undefined method `first' for nil:NilClass):
如果我在它之前执行binding.pry并在控制台中执行相同的操作,它可以正常工作。但是,如果我这样做:
<%= @mail.recipients %>
它给了我完整的数组。只是想知道视图中是否无法访问数组方法?
编辑:
<%= @mail %>
给了我
#<Mail::ActiveRecord_Relation:0x007f3658bf4f38>
然后我通过
<% @mail.each do |mail| %>
在我内部
<%= mail %>
它给了我
<Mail:0x007f3668951618>
然后我做
<%= mail.recipients.class %>
它给了我
Array
然后我做
<%= mail.recipients.first %>
它给了我
ActionView::Template::Error (undefined method `first' for nil:NilClass):
答案 0 :(得分:0)
你应该有这样的事情:
class Mail < ActiveRecord::Base
has_many :recipients
....
end
class Recipient < ActiveRecord::Base
belongs_to :mail
....
end
在调用mail.recipients.first之前,请确保您已经将“邮件”定义为某些“收件人”。