2011-01-09 12 views
1

新しい/編集フォームで追加する必要があるオーディオファイルが1つまたは複数あるコンテンツモデルがあります。私は、次のを持っている私の新しいコンテンツの形で今Rails 3 fields_既存のレコード/新規レコード、ファイルアップロードのレイアウトが異なる

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を示しています新しいオーディオファイルと既存のファイルの場合は、ファイルサイズ、名前、おそらく削除ボタンを印刷してください。私がアップロード用ペーパークリッププラグインでのRails 3.0.3を使用しています

@content.audios.build 

は、私はまた、コントローラに新しいレコードを作成しました。申し訳ありませんが、質問があまりにも重すぎる場合。

ありがとうございました。

答えて

0

私の記憶からは、fields_forステートメント内のオブジェクトのインスタンスにアクセスできるようになります。 nilをaudiof.objectを返す(その場合には、それは良い名前ではない)場合は、すべてのパブリックメソッドに<% = raise audiof.public_methods.inspect %>

オブジェクトのメソッドを表示して確認し、

<% 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 -%> 

そのような何かを試してみてくださいAudioクラスのインスタンスを返す必要があります。

+0

私は探していたが、new_recordにアクセスする方法を知らなかった方法。 – laleshii

関連する問題