べるべる研究日誌

なんでもやる系エンジニアの日々

フォームを使ったファイル自動送信

ファイルだけをアップロードする時に、ファイルを選択した後にSubmitを押さないといけないのがメンドクサイと。言われてみればたしかにデスクトップアプリではダイアログでファイル選択したら次ぎに行くなぁ。ということで、書いてみることに。

<%= javascript_include_tag "prototype" %>
<% form_tag({:action =>'file_upload'},:name=>'form',:multipart => true) { %>
<%= file_field "file", "data" %>
<script type="text/javascript">
	new Form.Element.Observer("file_data",1,function(){
		document.form.submit();
	})
</script>
<p>
<% } %>

Railsのobserve_fieldはAjax用なので自分で書く必要があるみたい。ということで、prototypeのObserverを使って書いてみました。間隔は1秒でも十分速い感じでした。

Ajaxな場合のファイルアップロードについてはRailsでAjaxっぽく画面遷移なしでファイルアップロードしたい! - yamazのRails日記 - Rubyistが丁寧です。こっちの方がインターフェース的にいいので「あとでやる」リストへ。

・その他参考