将其他模型的信息显示在不同的视图中

时间:2013-07-09 20:22:31

标签: ruby-on-rails

我正在尝试将属性从一个模型显示到另一个模型的视图。

我的第一个模型(animal)有一个属性animal_num,我想在另一个视图中将animal num中的信息显示为collection_select。选择将存储在属性num中。

这是我的_form的片段:

  <div>
   <%= f.label :num %><br />
   <%= f.collection_select :num, @animal.animal_num %>
  </div>

我确保我的动物模型与我的其他模型有belongs_to的关系。 numanimal_num也都是字符串。我的页面上仍然出现错误:

undefined method `animal_num' for nil:NilClass

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

解决方案:

  <div>
   <%= f.label :num %><br />
   <%= f.select :num, Animal.all.collect {|c| [c.animal_num] } %>
  </div>

答案 1 :(得分:0)

你必须链接这两个模型。例如,在Animal中,你应该有这样的东西

class Animal < ActiveRecord::Base
  has_many :animal_nums
end

在另一个模型上,您应该

class AnimalNum < ActiveRecord::Base
  belongs_to :animal
end

因此,当您调用animal_nums(使用复数形式)时,您将不会有“未定义的方法”