2011-11-05 72 views
0

我有存儲關於照片的數據的多態模型。我將該模型用於許多類型的內容,例如用戶照片(content_type:User,content_id:user_id),遊戲屏幕截圖等。直到現在,我僅將該照片模型用於已存在的內容。現在我需要在創作階段爲某些模型添加一些照片。Ruby on Rails - 將照片添加到未保存的模型

問題是,我無法將content_id傳遞給partial,因爲模型在保存之前沒有它。

下面請找到適用於現有型號的代碼。

代碼photos/add_photo部分組成:

<% form_for(@photo, :html => { :multipart => true }) do |f| %> 
     <%= f.error_messages %> 
     <%= f.hidden_field :attachable_id, :value => content.id %> 
     <%= f.hidden_field :attachable_type, :value => content.class.name %> 
     file inputs goes here... 
     <%= f.submit "Upload" %> 
    <% end %> 

在這裏,我是如何通過實例變量,局部在遊戲的看法:

<%= render :partial => 'photos/add_photo', :locals => { :content => @game } %> 

現在我希望讓用戶添加截圖給新創建的報告。我有控制器:

def new 
     @raport = Raport.new 
    end 

我該如何強制模型保留或生成ID?也許我應該找出另一個解決方案並更改整個代碼?

回答

0

我會使用ajax以隨機令牌散列保存照片,然後讓ajax響應使用該令牌散列更新新對象窗體中的隱藏字段。然後,當您保存新對象時,請回撥通過令牌查找照片並更新可附加標識&類型字段。