现在它的功能是允许我选择文件,但我需要点击另外一个“提交”按钮来进行表单提交。是否可以将浏览按钮的功能与表单提交相结合? Rails中是否有功能,还是需要使用javascript创建自定义ajax调用?谢谢!
当前代码:
= form_for @user, :url => add_file(@user), :remote => true do |f|
= file_field_tag :file
答案 0 :(得分:1)
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中写这个,但我把它留给你。:)
答案 1 :(得分:1)
为此你需要使用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]);
}
}
我的要求是上传图片并在我上传后立即显示其预览。
答案 2 :(得分:0)
使用rails无法实现,但你可以考虑使用像fine uploader
这样的javascript插件