0

という名前のモデルと という名前のモデルがPageありMediumます。Medium はアップロードされた画像用です。2 つのモデルは、豊富な HABTM 関連付けで接続されています。

ページ編集フォームから画像をアップロードできるようにしたいです。しかし、私は奇妙な結果を得ました。ページに既に画像が関連付けられている場合にのみ、ファイルフィールドを取得しています。何が原因でしょうか?

これは私のページモデルです:

  class Page < ActiveRecord::Base
  attr_accessible :content, :title, :url, :status, :excerpt, :media_attributes
  belongs_to :users
  has_many :page_medium
  has_many :media, :through => :page_medium
  accepts_nested_attributes_for :media

  acts_as_url :title, :only_when_blank => true, :sync_url => true
  acts_as_list


  STATUS = %w[draft published]

  def to_param
    "#{url}" # or whatever you set :url_attribute to
  end

  validates :title, :status, :url, :presence => true


end

これは私のフォームです:

<%= simple_form_for @page, :html => { :class => 'page-form' } do |f| %>

<div class="span9">
  <div class="row">
    <%= f.input :title, input_html: { class: 'span6'}, wrapper_html: { class: 'span6'}   %>
    <%= f.input :url, input_html: { class: 'span3'}, wrapper_html: { class: 'span3'}  %>
  </div>

  <div class="tabbable"> <!-- Only required for left/right tabs -->
    <ul class="nav nav-tabs">
      <li class="active"><a href="#tab1" data-toggle="tab">Content</a></li>
      <li><a href="#tab2" data-toggle="tab">Excerpt</a></li>
    </ul>
    <div class="tab-content">
      <div class="tab-pane active" id="tab1">
        <%= f.input :content, label: false, input_html: { class: 'wysihtml5 span9' } %>

      </div>
      <div class="tab-pane" id="tab2">
        <%= f.input :excerpt, label: false, input_html: { class: 'wysihtml5 span9 excerpt' }%>
      </div>
    </div>
  </div>

</div>


<div class="span3">
  <div class="well">
    <fieldset>
      <legend>Options</legend>
    </fieldset>
    <%= f.input :status , collection: Page::STATUS.map { |s| [s.humanize, s] }, prompt: '- Select page status -' %>
      <div class="form-actions">
        <%= f.button :submit, :class => 'btn btn-primary' %>
        <%= link_to t('.cancel', :default => t("helpers.links.cancel")),
                    pages_path, :class => 'btn' %>
      </div>
  </div>
</div>  

<div class="span9">
    <%= f.simple_fields_for :media do |m| %>
      <%= m.input :image, as: :file %>

    <% end %>
</div>


<% end %>
<%= render :partial => 'display_images' %>

さらに情報やコードが必要な場合はコメントしてください。すべてのヒント、回答、または建設的なコメントをお待ちしております。:)

4

1 に答える 1

1

このコード:

<%= f.simple_fields_for :media do |m| %>
  <%= m.input :image, as: :file %>

<% end %>

すでに持っている画像のみを更新できます。さらに画像を追加するには、Railscast の次のエピソードに従うことをお勧めします: http://railscasts.com/episodes/196-nested-model-form-revised

于 2013-04-28T01:31:03.837 に答える