我有一个表单允许用户上传图片文件,但我目前以文本格式提供,所以他们输入图片的文件名,但我想拥有它,所以他们点击一个选择按钮上传文件而不是输入文件,然后当从硬盘驱动器中选择文件时,它将显示在按钮旁边的文本框中,谢谢。
<%= form_for(@question) do |f| %>
<p>
<%= f.label :question %><br/>
<%= f.text_field :question, autofocus: true %>
</p>
<p>
<%= f.label :description %><br/>
<%= f.text_area :description, cols: 40, rows: 7 %>
</p>
<p>
<%= f.label :posted_by %><br/>
<%= f.text_field :posted_by, size: 5 %>
</p>
<p>
<%= f.label :image_file_name %><br/>
<%= f.text_field :image_file_name, size: 30, placeholder: 'GIF, JPG, or PNG file' %>
</p>
<p>
<%= f.label :posted_at %><br/>
<%= f.date_select :posted_at %>
</p>
<p>
<%= f.submit %>
<%= link_to('Cancel', questions_path) %>
</p>
<% end %>
答案 0 :(得分:2)
您可以使用file_field
代替允许上传文件的text_field
。
<%= f.file_field :image_file_name,accept: 'image/png,image/gif,image/jpeg',:multiple => true %>
:multiple
- 如果设置为true,在大多数更新的浏览器中,系统将允许用户选择多个文件。
:accept
- 如果设置为一个或多个mime-types,则在选择文件时会向用户建议过滤器。您仍然需要设置模型验证。
有关详细信息,请参阅此API
答案 1 :(得分:0)
尝试使用file_field
代替text_field
。
<%= f.text_field :image_file_name, accept: 'image/png,image/gif,image/jpeg' %>
答案 2 :(得分:0)