现在它的作用是允许我选择文件,但我需要单击一个额外的“提交”按钮来提交表单。是否可以将浏览按钮的功能与表单提交结合起来?Rails 中是否有功能,或者我是否需要使用 javascript 创建自定义 ajax 调用?谢谢!
当前代码:
= form_for @user, :url => add_file(@user), :remote => true do |f|
= file_field_tag :file
现在它的作用是允许我选择文件,但我需要单击一个额外的“提交”按钮来提交表单。是否可以将浏览按钮的功能与表单提交结合起来?Rails 中是否有功能,或者我是否需要使用 javascript 创建自定义 ajax 调用?谢谢!
当前代码:
= form_for @user, :url => add_file(@user), :remote => true do |f|
= file_field_tag :file
为此,您肯定需要使用 jquery ......我使用以下功能做了同样的事情
这是我的html代码:-
<div class="third"><input name="upload" value="" type="text"/> <span class="activebtn sm"><a href="" class="btn">Browse...</a></span><input type="file" name="images[]" onchange="displayPreview(this.files,this)" class="image_upload" size="23" id="image_upload1"/></div>
在改变我写了jquery
function displayPreview(files,obj)
{
curr_file_obj = $(obj);
if(window.FileReader)
{
var reader = new FileReader();
reader.onload = onFileLoad;
reader.readAsDataURL(files[0]);
}
}
我的要求是上传图像并在上传后立即显示其预览。
Rails 没有这样的功能。
您需要编写 javascript 来执行此操作,但您不需要进行 ajax 调用。
相反,定义 file_field_tag 但使用 CSS display:none; 将其隐藏。然后定义一个实现你的javascript的按钮。您的 javascript 应该调用隐藏的 file_field_tag,然后提交表单。
<% form_for @user, :url => add_file(@user), :remote => true do |ff| %>
<%= ff.file_field_tag "file", "id" => "file_select_input", "style" => "display:none" %>
<%= ff.button "upload", "onclick" => "<your-javascript-call>" %>
<% end %>
很抱歉没有用 HAML 写这个,但我把它留给你。:)
Rails 不可能,但您可以考虑使用像Fine Uploader这样的 javascript 插件