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