以下是我的home_controller:
class HomeController < ApplicationController
def index
@products = Product.public_active.order('random()').limit(6).includes(:product_attachments).includes(:product_reviews)
end
end
和我的product.rb模型
class Product < ActiveRecord::Base
has_many :product_attachments, dependent: :destroy
accepts_nested_attributes_for :product_attachments, allow_destroy: true
attr_accessor :product_display
attr_accessor :product_overview_url
def set_extra_attributes
self.product_overview_url = self.product_attachments[0].attachment.medium.url
end
def set_cover_photo
self.product_display = self.product_attachments.find(self.cover_id).attachment.url
end
end
在我的家庭观看次数app/views/home/_product_section.html.erb
中,我无法访问product_display
<div class="row">
<% @products.each do |product| %>
<div class="img-holder">
<a href="<%= product_path product %>">
<img src="<%= product.product_display %>" alt="<%= product.name %>" style="width: 100%;">
</a>
</div>
<% end %>
</div>
但我可以从我的self.product_overview_url
页面模板访问app/view/products/index.html.erb
。我需要建立关系,以便home_controller
可以访问product.rb
模型吗?谢谢!
答案 0 :(得分:1)
在set_extra_attributes和set_cover_photo方法中,不需要self,因为这些是引用实例属性的实例方法。
def set_extra_attributes
product_overview_url = product_attachments[0].attachment.medium.url
end
def set_cover_photo
product_display = product_attachments.find(cover_id).attachment.url
end
端
您需要确保将product_display设置为某个内容。