数组方法在局部视图中不起作用

时间:2017-02-02 08:30:00

标签: arrays ruby-on-rails-5

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):

1 个答案:

答案 0 :(得分:0)

你应该有这样的事情:

class Mail < ActiveRecord::Base
  has_many :recipients
  ....
end

class Recipient < ActiveRecord::Base
  belongs_to :mail
  ....
end

在调用mail.recipients.first之前,请确保您已经将“邮件”定义为某些“收件人”。