1

已回答

我实际上在制定问题时找到了答案,但我以任何方式发布它,因为有些人可能会觉得这很有用(如此处所述:https ://meta.stackexchange.com/questions/49922/should-i-continue-adding-一个问题,如果我找到了答案,我自己

我在为 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 顺便说一句的答案:Problem shows the 'size' attribute for a 'file_field' using Ruby on Rails 3

他说这是一个跨浏览器的事情,他们以不同的方式呈现文件字段。就是这样,但如果浏览器可以处理它,我想呈现一个短文件字段。

4

3 回答 3

2

I used:

= file_field_tag :soap_test_zip_file, {:name => 'soap_test_zip_file[file]', :size => 11}

This made me override the name(for the controller) and the size

于 2011-04-14T07:54:37.487 回答
0

似乎对我不起作用..

我想到了另一种选择:jquery ..

$('#user_photo_photo').attr('size', 1);

答对了!!

于 2011-06-02T04:17:58.143 回答
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'
于 2013-01-06T13:02:28.917 回答