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



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

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

我什至不完全确定我的设置是否正确,因此任何帮助将不胜感激。

您将search_id放在照片表中,所以我认为您应该像这样定义照片类

class Photo < ActiveRecord::Base
  belongs_to :search
end

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

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

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

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

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

最新更新