2013-04-27 3 views
0

У меня есть модель с именем Page и одна по имени Medium. Средство для загруженных изображений. Эти две модели связаны с богатой ассоциацией HABTM.Вложенная форма не отображается (simple_form)

Я хочу, чтобы иметь возможность загружать изображения через форму редактирования моей страницы. Однако я получил странный результат. Я получаю только поле файла, когда на странице уже есть связанное с ним изображение. Что может вызвать это?

Это моя страница модели:

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

Прокомментируйте, если вам нужна дополнительная информация или код. Все советы, ответы или конструктивные комментарии оценены. :)

ответ

1

этот код:

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

<% end %> 

только позволит вам обновить изображения, которые вы уже имеете. Чтобы добавить дополнительные изображения, я предлагаю вам следовать этому эпизоду railscast: http://railscasts.com/episodes/196-nested-model-form-revised

Смежные вопросы