我设置了两个模型:照片和搜索。每张照片都有一个相关的搜索,我想尝试在照片视图中显示此相关搜索。这是我的模特:
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
我甚至不确定我的设置是否正确,所以任何帮助都会非常感激。
答案 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>