【问题标题】:Displaying uploading buttons depending on files uploaded根据上传的文件显示上传按钮
【发布时间】:2013-12-13 02:19:08
【问题描述】:

我有一个项目模型,我可以在其中创建项目并为每个项目上传视频和照片。我正在使用嵌套属性。我的表单显示 5 个照片上传按钮和 5 个视频上传按钮。我想隐藏使用的按钮。例如:如果我上传了 1 张照片和 2 个视频,我希望我的编辑表单显示 4 个上传照片按钮和 3 个视频按钮。

现在,如果上传照片,它会隐藏照片中的 1 个上传按钮和视频中的一个按钮。有谁知道如何做到这一点?

这是我的控制器。

 def new
        @project = Project.new()
        (5 - @project.assets.length).times { @project.assets.build }


        respond_to do |format|
          format.html # new.html.erb
          format.xml  { render :xml => @project }
        end


      end

      # GET /projects/1/edit
      def edit
          @project = Project.find_by_permalink(params[:id])
          (5 - @project.assets.length).times { @project.assets.build }


      end

宝石:

gem "paperclip", "~> 3.5"

# handels video upload
gem "paperclip-ffmpeg", "~> 1.0.0"

项目模型:

class Project < ActiveRecord::Base
    has_permalink :title
    default_scope :order => 'created_at desc'
    attr_accessible :title, :description, :assets_attributes, :dependent => :destroy
    validates_uniqueness_of :title
    validates_presence_of :title
    has_many :assets, :dependent => :destroy
    accepts_nested_attributes_for :assets, :allow_destroy => true

end

资产模型:

class Asset < ActiveRecord::Base
    require 'paperclip'
    require 'paperclip-ffmpeg'

    belongs_to :project, :foreign_key => "project_id"
    attr_accessible :project_id, :photo, :video
    has_attached_file :photo, :styles => {  :thumb => "130x130#", :medium => "300x300#", :small => "160x160#"}
    has_attached_file :video, :styles => {
    :mobile => {:geometry => "400x300", :format => 'flv', :streaming => true}
  }, :processors => [:ffmpeg, :qtfaststart]   


end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 file-upload ruby-on-rails-4


    【解决方案1】:

    您需要区分视频资产和图像资产。这样就可以了。 此外,如果您可以与我们分享正在使用的宝石,我们可以提供更好的帮助。

    【讨论】:

      【解决方案2】:

      通过制作“添加”按钮解决了这个问题,根据要求添加一个文件字段。(一个用于上传视频,一个用于上传照片。)

      <div class="row">
        <div class="newPaperclipFiles col-md-4 col-md-offset-1" style="overflow: hidden;">
          <h3 style="color:rgb(31,154,207);">Upload a Photo</h3>
          <hr style="margin-left: -20%; width: 280px !important;"></hr>
          <%= f.fields_for :assets do |asset_photo| %>
            <% if asset_photo.object.new_record? %>
              <div class="btn custumbtn btn-xs" id="duplp" onlick="duplicatep()">Add</div>
              <div id="duplicaterp"> 
                <%= asset_photo.file_field :photo %>
              </div>
            <% end %>
          <% end %>
        </div>
      </div>
      

      js:

      <script type="text/javascript">
      document.getElementById('duplp').onclick = duplicatep;
      
      var i = 0;
      var original = document.getElementById('duplicaterp');
      
      function duplicatep() {
          var clone = original.cloneNode(true);
          clone.id = "duplicaterp" + ++i;
          original.parentNode.appendChild(clone);
      }
      </script>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-03
        • 2020-09-22
        • 1970-01-01
        • 2015-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多