在我的表单中,我有文件上传的字段,使用默认的rails方法完成,看起来像这样(我在这里使用simple_form,要清楚):
= f.input :spec_url, as: :file
它可以生成很好且容易使用的字段,用户可以从硬盘中选择任何文件。但我想让用户只需输入这些信息。因为这是URL的字段,所以它应该是字符串字段,可以只填写,有可能上传一些东西。 我怎样才能做到这一点?有些宝石可能吗?
答案 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