【问题标题】:How to capture the filename of the browse button?如何捕获浏览按钮的文件名?
【发布时间】:2012-10-21 03:55:01
【问题描述】:

我是 ROR 的新手。我想在选择带有扩展名的文件后捕获浏览按钮的文件名。我想将文件名存储到数据库的 File_name 列中。请帮我这样做。是否可以获得存储在 File_name 列中的文件的完整路径而不仅仅是文件名?请建议我这样做。我不想上传文件。只是我想要一个文件名来存储。

View(New)
--------------
<div class="pro-data-imports">
  <%= form_for @pro_data_import do %>

  <div class="field">
    Browse the file to upload:<br />
    <%= file_field_tag :File_name %>
  </div>

  <div class="actions">
    <%= submit_tag 'Import File' %>
  </div>
<% end %>
</div>


Controller
----------

class Pro::DataImportsController < ApplicationController
  before_filter :authenticate_user!
  layout "layouts/enr/energy_master"

  def index
    @pro_data_imports = Pro::DataImport.all
  end

  def new
    @pro_data_import = Pro::DataImport.new
    @pro_data_import.updated_by = current_user
  end

  def create
    @pro_data_import = Pro::DataImport.new(params[:pro_data_import])
    @pro_data_import.updated_by = current_user

  end 
end

Model
-------
I have File_name, File_validate, :updated_by Columns

【问题讨论】:

  • 我不认为浏览器会给你完整的文件名路径。不应该。
  • 是的,这就是我从所有人那里得到的反馈。谢谢你的回答。您能帮我获取浏览器按钮的文件名并将其保存到数据库中吗?
  • 我猜你可以用客户端脚本和css来做到这一点。使用 css 隐藏提交按钮,并使用 javascript 从输入字段中获取值。我认为只有 Rails 是不可能的。
  • 我对 Rails 很陌生。我有点困惑这样做。好的 想象一下,不是浏览按钮,而是文本框按钮。我想将文本框数据存储到数据库中。只是文本框数据。
  • 您应该尝试使用 text_field_tag 而不是 file_field_tag。

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


【解决方案1】:

我不知道你的意思。在您提到的 cmets 中,您想知道如何使用两个参数调用存储过程。如果您的数据库是 SQL,请尝试以下操作并根据您的规范更改字段名称。

在你的模型中,创建一个方法

def update
  parameters = [self.File_Name, File_Location]
  parameters.map!{|p| ActiveRecord::Base.connection.quote p}
  sql = "your store procedure name"(#{parameters.join(',')})"
  ActiveRecord::Base.connection.execute(sql)
end

在您的控制器中,

在你的 create 方法中,调用 update 方法。

def create
  @update = Pro::DataImport.new(params[:pro_data_import])
  @pro_data_import.updated_by = current_user
  @update.update
  .........
  ...
end

我希望它会有所帮助。这只是一个可以效仿的例子。不要复制和粘贴.. :)

【讨论】:

  • 不知道你在控制器的第二行做了什么。 :P
  • 哦,谢谢你。它对我很有用。
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多