在Rails视图中显示关联的模型数据

时间:2014-01-18 00:01:41

标签: ruby-on-rails view model controller associations

我设置了两个模型:照片和搜索。每张照片都有一个相关的搜索,我想尝试在照片视图中显示此相关搜索。这是我的模特:

class Photo < ActiveRecord::Base

  has_one :search

end

# Data: name:string, photo_url:string, search_id:integer

暂且不说:我不确定我是否需要在这里拥有has_many协会。

class Search < ActiveRecord::Base

  validates :search_term, :presence => true
  has_many :photos

end

# Data: search_term:string

以下是控制器操作:

def index
  @photos = Photo.all
end

最后,视图模板:

<!-- index.html.erb -->

<section class="photos">
  <%= render @photos %>
</section>

<!-- _photo.html.erb -->

<div class="photo__item">
  <h1><%= photo.id %>: <%= photo.name %></h1>
  <h3>Search_term: <%= photo.search_id.search_term %></h3>
  <%= image_tag(photo.photo_url) %>
</div>

我得到的错误是:

undefined method `search_term' for 2:Fixnum

我甚至不确定我的设置是否正确,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

您需要设置正确的关联。尝试将has_one :search更改为belongs_to :search

  

belongs_to关联始终在具有外键的模型中使用。

请参阅:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

答案 1 :(得分:1)

你把search_id放在照片表中,所以我认为你应该像这样制作照片类定义

class Photo < ActiveRecord::Base
  belongs_to :search
end

在视图中你应该像这样获得照片的搜索实例

<h3>Search_term: <%= photo.search.search_term %></h3>