2

まあ言ってみれば:

[マイクロポスト] -> has_one -> [マイクロポスト写真アルバム] -> has_many -> [マイクロポスト写真]

Micropost に写真が 1 枚あれば、MicropostPhotoAlbum は必要ありません。microposts テーブルに「画像」列を追加するだけで、carrierwave とスムーズに連携できます。

以下の私のフォームはうまくいきます:

   = form_for @micropost, :remote => true do |f|
        = f.file_field :image  # Needed for image previewing with html5 file api
        = f.hidden_field :user_id
        = f.text_area :content
        = f.submit "Post"

私がする必要があるのは、マイクロポスト モデルにアップロードをマウントすることだけです。画像パスは、マイクロポスト テーブルの画像列 (photo.png など) に直接アップロードされます。

上記のように、各マイクロポストには写真はありませんが、代わりに多くの写真を含む 1 つのアルバムがあります。画像列の代わりに micropost_album_id 列が表示されるため、フォームが機能しなくなりました。

現在のフォームを使用して写真を写真テーブルにアップロードし、マイクロポストのコンテンツを 1 回の送信で投稿するにはどうすればよいですか? 各マイクロポストに 1 枚の写真を表示するように戻す以外に、これを回避する簡単な方法はありますか?

敬具

4

1 に答える 1

2

これは、ネストされた属性の仕事のように見えます。

これは、フォーム内のネストされた属性に関する (確かに古い) 記事です。fields_forがキーです。

于 2012-05-10T05:36:00.683 に答える