2011-01-09 53 views
1

我有一個內容模型,它有一個或多個需要由新/編輯表單添加的音頻文件。 我都沒有被創建的模型有了這層關係:Rails 3 fields_for現有記錄/新記錄,文件上傳的不同佈局

class Audio < ActiveRecord::Base 
    belongs_to :content 
    has_attached_file :audiofile, 
end 

class Content < ActiveRecord::Base 
    ... 
    has_many :audios 
    accepts_nested_attributes_for :audios, :allow_destroy => true 
end 

現在,在我的新的內容形式,我有以下幾點:

<% f.fields_for :audios do |audiof| -%> 

    <%= f.label :audiofile, 'Audio file:' %>&nbsp; 
    <%= audiof.file_field :audiofile %> 

<% end -%> 

我需要做什麼用的只是告訴我的是,file_field爲一個新的音頻文件和現有的只是打印我的文件大小,名稱和可能是一個刪除按鈕。

我還創建了一個新的紀錄在控制器:

@content.audios.build 

我用Rails 3.0.3用回形針插件上傳。對不起,如果這個問題太白癡了。

謝謝。

回答

0

從我的記憶中,您將能夠訪問fields_for語句內的對象實例。

嘗試類似的東西:

<% f.fields_for :audios do |audiof| -%> 
    <% if audiof.object.new_record? %> 
    <%= f.label :audiofile, 'Audio file:' %>&nbsp; 
    <%= audiof.file_field :audiofile %> 
    <% else %> 
    <%= "Filename = #{audiof.object.audiofile.filename}" %> 
    <%= "url = #{audiof.object.audiofile.url}" %> 
    <% end %> 
<% end -%> 

如果無audiof.object返回(在這種情況下,它是不是好名字),通過顯示所有的公共方法<% = raise audiof.public_methods.inspect %>

對象的方法檢查應該返回一個Audio類的實例。

+0

謝謝你是我正在尋找,但不知道如何訪問new_record?方法。 – laleshii 2011-01-09 22:21:03

相關問題