방법 내가 사용 :
나는 많은 사진이 그 속성이 (10시). 속성 컨트롤러에서
:이 어디 갔지 코드에가는
def new
@search = Property.search(params[:search])
@property = Property.new
10.times { @property.photos.build }
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @property }
end
end
# GET /properties/1/edit
def edit
@search = Property.search(params[:search])
@property = Property.find(params[:id])
# Se o usuário atual for dono da propriedade
if current_user.id == @property.user_id
@photos = Photo.where("property_id = ?", @property.id)
@N = @photos.count
@N = [email protected]
@N.times { @property.photos.build }
else
render :action => "show"
end
end
10.times이보기에 10 배 사진 필드를 "렌더링". 편집 양식에서 사진 필드 만 남겨 둡니다. 예 : 처음으로 사진 3 장을 업로드 한 후 더 업로드하려면 7 개의 필드 만 표시됩니다. 속성 모델에서
나는이 :
class Property < ActiveRecord::Base
attr_accessible :photos_attributes, :logradouro, :complemento, :wc, :negocio, :cep, :vagas, :valor,
:quartos, :uf, :area, :bairro, :suites, :salas, :numero, :cidade, :descricao,
:status, :tipoImovel
has_many :photos
accepts_nested_attributes_for :photos, :allow_destroy => true
end
이 사진을 업로드 할 수 있습니다.
사진 모델 : 일부 내 양식에
class Photo < ActiveRecord::Base
belongs_to :property
has_attached_file :photo, :styles => { :small => "100x100>", :medium => "530>x530", :large => "800x800>" }
validates_attachment_presence :photo
validates_attachment_size :photo, :less_than => 500.kilobytes
end
는 :
<div id="new_up">
<%= f.fields_for :photos do |p| %>
<% if p.object.new_record? %>
<p><%= p.file_field :photo %>
<%= p.radio_button :miniatura, true -%>
</p>
<% end %>
<% end %>
</div>
<div id="old_up">
<h4>Imagens Atuais</h4>
<% f.fields_for :photos do |p| %>
<% unless p.object.new_record? %>
<div style="float: left;">
<%= p.radio_button :miniatura, true -%>
<%= link_to image_tag(p.object.photo.url(:small)), p.object.photo.url(:original) %>
<%= p.check_box :_destroy %>
</div>
<% end %>
<% end %>
</div>
, 당신이 이제까지 무엇을 알게 되었습니까? 감사. –
Paperclip에 대한 내용은 아니지만 적어도 전체 솔루션은 아닙니다 (유효성 검사없이 여러 첨부 파일 지원은 http://www.emersonlackey.com/article/rails-paperclip-multiple-file-uploads에서 볼 수 있습니다). 나는 Sinatra 앱과 비슷한 것을 나중에 코딩했는데, 제대로 잡으려면 오랜 시간이 걸렸습니다. 잠시 동안 나는 사용자를 위해이 지원을 제공하지 않을 것입니다. (내 양식의 다른 필드에 대한 유효성 검사가 실패하면 다시 업로드해야합니다.) 저는 이것이 "80 %"솔루션을 사용할 때의 도전이라고 생각합니다. 확장보다는 처음부터 코딩하는 것이 더 쉽습니다. –