回答
实际上,我在制定问题时找到了答案,但我会以任何方式发布,因为有些人可能会觉得这很有用(如这里所说的: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">这给了我正确的身份,但却是错误的名字。问题是如何复制file_field,但大小如何?
我看了Ryan的答案:Problem showing the 'size' attribute for a 'file_field' using Ruby on Rails 3
他说,这是一个跨浏览器的东西,他们呈现文件字段的方式不同。是这样的,但是如果浏览器能够处理的话,我想呈现一个短文件字段。
发布于 2011-04-14 07:54:37
我用:
= file_field_tag :soap_test_zip_file, {:name => 'soap_test_zip_file[file]', :size => 11}这使我重写了控制器的名称和大小。
发布于 2011-06-02 04:17:58
似乎不适合我..。
我想到了另一种选择: jquery。
$('#user_photo_photo').attr('size', 1);宾果!!
发布于 2013-01-06 13:02:28
如果您不想重写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'https://stackoverflow.com/questions/5659734
复制相似问题