如何在ActiveStorage Rails 5.2实现中检索源文件名?

问题描述 投票:0回答:1

虽然我发现了相同的问题here,但可以上载文件,但无法检索原始文件名。

从BusinessObject,我创建一个加载文件的范围:

app/views/scopes/_form.html.erb
<%= form_with model: [@business_object, @scope], html: {id: "edit_form"} do |f| %>
  <!-- apply template to Scope -->
  <%= render partial: "shared/object_definition_form", locals: {this_object: @scope, f: f} %>

  <!-- additional fields -->
  <div class="row">
    <div class="col-md-2 text-right"><%= t('FileUpload') %>:
    </div>
    <div class="col-md-10 field"><%= f.file_field :uploaded_file, class: "btn btn-primary" %>
    </div>
  </div>
  <%= f.submit "Validate" %>
<% end %>

作用域控制器按预期方式附加了文件,但它也应该将文件名存储在resource_file字段中:

app/controllers/scopes_controller.rb
def update
    ### Scope retrieved by Callback function
    @scope.updated_by = current_login
    if params.has_key?(:uploaded_file)
      @scope.uploaded_file.purge
      @scope.uploaded_file.attach(params[:uploaded_file])
      @scope.resource_file = self.uploaded_file.blob.filename
    end

    respond_to do |format|
      if @scope.update_attributes(scope_params)
        format.html { redirect_to @scope, notice: 'Scope was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @scope.errors, status: :unprocessable_entity }
      end
    end
  end

我尝试了几种方法来获取原始文件名,但无法做到。任何想法 ?谢谢!

ruby-on-rails rails-activestorage
1个回答
0
投票

附加文件后,可以通过以下方式检索原始文件名:

@scope.uploaded_file.filename
© www.soinside.com 2019 - 2024. All rights reserved.