虽然我发现了相同的问题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
我尝试了几种方法来获取原始文件名,但无法做到。任何想法 ?谢谢!
附加文件后,可以通过以下方式检索原始文件名:
@scope.uploaded_file.filename