一个文件的两个字段

时间:2014-02-27 13:13:15

标签: ruby-on-rails ruby

在我的表单中,我有文件上传的字段,使用默认的rails方法完成,看起来像这样(我在这里使用simple_form,要清楚):

= f.input :spec_url, as: :file

它可以生成很好且容易使用的字段,用户可以从硬盘中选择任何文件。但我想让用户只需输入这些信息。因为这是URL的字段,所以它应该是字符串字段,可以只填写,有可能上传一些东西。 我怎样才能做到这一点?有些宝石可能吗?

1 个答案:

答案 0 :(得分:0)

您需要有两个字段(字符串和文件):

= f.input :spec_url, as: :string, id: 'url-field'
= f.input :spec_file, as: :file, id: 'file-field'

添加一些javascript(我正在使用CoffeeScript),它将在spec_url字段上设置文件名:

$ ->
  $('#file-field').on 'change', (e) =>
    $('#url-field').val($(e.target).val())

然后你可以在Ruby代码中做一些条件语句:

if params[:object][:spec_file]
  # Upload file
  object.spec_url = params[:object][:spec_file].original_filename
else
  # Open URL
  object.spec_url = params[:object][:spec_url]
end

attr_accessor :spec_file添加到您的模型中:

attr_accessor :spec_file

这只是一个粗略的想法,因为我不确定上下文是什么。您可能需要修改和设置一些代码的样式。

<强>更新

您可能还会发现此问题有用:Rails: upload a file OR store a url