2012-03-06 70 views
0

我有一个附件模型和控制器为我的网站上的图像。控制器问题与2个模型

的关系是(多态):

class House 
    has_many :attachments, :as => :attachable 
end 

class Apartment 
    has_many :attachments, :as => :attachable 
end 

附件控制器看起来像这样保存正确的变量。

class AttachmentController 
    @appartment = Appartment.find(params[:apartment_id]) 
    @attachments = @appartment.attachments 
end 

这个工程在公寓页面/路径。 (公寓/ 1 /资产)但是在房屋页面(房屋/ 1 /资产),我收到错误消息“找不到没有ID的公寓”

我该如何处理这种/最佳方法?控制器中的条件?

回答

0

你需要检查哪些项存在第一,这样的事情:

class AttachmentController 
    before_filter :prepare_attachable 

    def index 
    @attachments = @attachable.attachments 
    end 

    private 

    def prepare_attachable 
    if params.kas_key?(:apartment_id) 
     @attachable = Apartment.where(:id => params[:apartment_id]).first 
    elsif params.kas_key?(:house_id) 
     @attachable = House.where(:id => params[:house_id]).first 
    end 
    raise ActiveRecord::RecordNotFound if @attachable.blank? 
    end 
end 
0

可能出现的问题......

“公寓房”与公寓

+0

这并不提供答案这个问题。要批评或要求作者澄清,请在其帖子下方留言。 – Mischa 2012-11-13 08:10:48

+0

但是,如果作者拼错了一个模型名称,这将是一个错误,因此,OP的问题的答案。无论哪种情况,这都是一个六个月大的问题......我们是否真的要从坟墓中挖掘出来? ;) – varatis 2012-11-13 08:55:12

+0

我是[reviewing](http://stackoverflow.com/review)的答案。我实际上没有写这个评论。它被自动发布。 – Mischa 2012-11-13 09:20:01