2012-02-15 2 views
3

사진 모델이 있는데 사용자가 동일한 양식의 여러 사진을 만들 수 있도록 양식을 설정하려고합니다. Railscasts # 196과 197을 중첩 된 모델 형태로 보았습니다.하지만 필요한 것보다 더 복잡하고 동일한 모델의 여러 객체가 아닌 여러 모델을 포함하는 양식을 더 많이 사용합니다. 다음은 사용자가 이미지를 첨부하고 새 Photo 객체를 만들 수있는 간단한 양식에 대한 내 코드입니다. 나는 fields_for를 실험 해 보았지만 중첩을 시도했지만 지나치게 복잡해 보이고 작동하지 않습니다. 사용자가 5 개의 이미지를 첨부하여 5 개의 새로운 Photo 개체를 만들 수 있도록이 양식을 어떻게 설정할 수 있습니까?Rails 3.1에서 단일 형식으로 여러 객체를 만들려면 어떻게해야합니까?

<%= form_for(@photo, :html => { :class => "form-stacked", :multipart => "true" }) do |f| %> 
    <div class="clearfix"> 
    <%= f.file_field :image %> 
    </div> 
    <div><%= f.submit "Upload", :class => "btn primary" %></div> 
<%end %> 

답변

1

(사진) 반송파로 업로드합니다. plupload-rails gem과 다음 코드를 사용하고 모든 것이 잘 작동합니다.

<%= javascript_tag do %> 
    $(function(){ 
     var uploader = $('#uploader').pluploadQueue({ 
      runtimes : "html5, gears,flash,silverlight,browserplus", 
      max_image_size : '100mb', 
      url : "/photos", 
      unique_names : true, 
      multipart: true, 
      preinit: attachCallbacks, 
      multipart_params: { 
       "authenticity_token" : '<%= form_authenticity_token %>' 
      }, 

      flash_swf_url : '/plupload/js/plupload.flash.swf', 
      silverlight_xap_url : '/plupload/js/plupload.silverlight.xap' 

     }); //end initial script 

     //redirect after complete 
     function attachCallbacks(uploader) { 
      uploader.bind('FileUploaded', function(Up, File, Response) { 
       if((uploader.total.uploaded + 1) == uploader.files.length){ 
        var filesAdded = uploader.files.length; 
        window.location = "<%=j edit_individual_photos_path %>"+ '?files=' + filesAdded; 
       } 
      }); 
     } 
    }); //end function 
<% end %> 


<div class="" id="uploader"></div> 

누군가가 도움이되기를 바랍니다.

0

나는 게으니까 Ryan Bates Nested_Form 보석을 좋아합니다. 그러나 나는 그런 의견에 관해서

<div class="clearfix"> 
    <%= f.file_field :image %> 
</div> 

부분 _photo.erb이

<%= semantic_nested_form_for @user, :html => {:multipart => true} do |f| %> 


    <%= f.fields_for :photo %> 
    <p><%= f.link_to_add "Add Photo", :photo %></p> 


    <div class="actions"> 
    <%= f.submit :class => "btn-success" %> 
    </div> 

<% end %> 

을 할 거라고 :

을 나는 이것이 당신이, 내가 해냈어 찾고있는 것을 생각 여기 (Railscast의 carrierwave 에피소드 기준) :

https://github.com/rbirnie/image-upload

기본 소스 :

갤러리 모델

class Gallery < ActiveRecord::Base 
    attr_accessible :name, :paintings_attributes 
    has_many :paintings 
    accepts_nested_attributes_for :paintings 
end 

회화 모델 :

class Painting < ActiveRecord::Base 
    attr_accessible :gallery_id, :name, :image, :remote_image_url 
    belongs_to :gallery 
    mount_uploader :image, ImageUploader 
end 

갤러리 편집

<%= nested_form_for @gallery, :html => {:multipart => true} do |f| %> 
    <%= f.error_messages %> 
    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 

    <%= f.fields_for :paintings do |photo_form| %> 
    <%= photo_form.label :name %> 
    <%= photo_form.text_field :name %> 
    <%= photo_form.file_field :image %> 
    <%= photo_form.link_to_remove "Remove this photo" %> 
    <% end %> 

<p><%= f.link_to_add "Add a photo", :paintings %></p> 

    <p><%= f.submit %></p> 
<% end %> 

~ 나는 여러 파일을 plupload를 사용하여 종료

+0

나는 이것이 내가 무엇을 찾고 있는지 확신하지 못한다. 나는 그걸 가지고 놀고 있었고 작동시키지 못했다. 기본적으로 두 가지 모델에 대해 두 가지 다른 작업을 수행하려고합니다. has_many 사진이있는 User 모델을 업데이트하고 두 개의 새 사진 개체를 만들고 싶습니다. 코드를 사용할 때 새 Photo.rb 객체를 만들지 않고 사용자와 기존 사진을 모두 업데이트했습니다. – kcurtin

관련 문제