ANSWERED
我实际上在制定问题的过程中找到了答案,但我发布了它,因为有些人可能觉得这很有用(如下所述:https://meta.stackexchange.com/questions/49922/should-i-continue-adding-a-question-if-i-have-found-the-answer-myself)
我在向ROR3中的文件字段添加大小时遇到问题。这是我的语法:
= f.file_field :file, :size => "11"
这不会出现,但会创建一个文件输入字段:
<input type="file" name="soap_test_zip_file[file]" id="soap_test_zip_file_file">
现在我知道我之前已经开始工作了,所以我查看了一些旧代码并发现了这个:
= file_field_tag :file, :size => 11
输出:
<input type="file" size="11" name="file" id="file">
它给了我正确的大小,但错误的文件ID和名称。所以我尝试了这个:
<input type="file" size="11" name="soap_test_file_file" id="soap_test_file_file">
给了我正确的ID,但错误的名字。问题是我如何重现该file_field但具有大小?
我通过Ryan Bigg btw查看了这个答案:Problem showing the 'size' attribute for a 'file_field' using Ruby on Rails 3
他说这是一个跨浏览器的事情,他们以不同的方式呈现文件字段。就是这种情况,但我想渲染一个短文件字段,如果浏览器可以处理它。
答案 0 :(得分:2)
我用过:
= file_field_tag :soap_test_zip_file, {:name => 'soap_test_zip_file[file]', :size => 11}
这使我覆盖名称(对于控制器)和大小
答案 1 :(得分:0)
似乎对我不起作用..
我想到了另一种选择: jquery ..
$('#user_photo_photo').attr('size', 1);
宾果!!
答案 2 :(得分:0)
如果您不想重写name属性,可以执行以下操作:
保持形式
= f.file_field :file, :size => "11"
为file_field方法添加覆盖
# lib/my_override.rb
module ActionView
module Helpers
module FormHelper
def file_field(object_name, method, options = {})
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("file", options.update({:size => options[:size]}))
end
end
end
end
并通过初始化程序加载
# config/initializers/load_lib.rb
require 'my_override'