私はrest-clientを使用してrailsでファイルをアップロードしていますが、それをajaxに変更すると、
サーバーエラーが発生します。
フォームコード
<%= form_tag({:controller => 'person',:action => 'create'},:multipart => true) do
%>
<%= file_field_tag 'upload', :class => 'upload_name' %>
<%= submit_tag "Upload", :class => "photo_up btn btn-success" %>
<%end%>
AJAX コード
$(function(){
$(".photo_up").click(function(){
var filename = $(".upload_name").val();
$.ajax({
url: '/create', //your server side script
data: { upload: filename}, //our data
type: 'POST',
success: function (response) {
}
});
return false;
});
});
コントローラーコード
file_param = params[:upload]
puts "name os #{file_param}"
show_url = "............."
resource = RestClient::Resource.new show_url, :user => "admin",:password => "admin"
response = resource.post :file => file_param, :multipart => true
ここで、このコードを実行する と、サーバー エラー RestClient::InternalServerError (500 Internal Server Error):が発生し、サーバーがヌル ポインターを表示していることがわかります。コントローラーでは、次の行にエラーが表示されますresponse = resource.post : file => file_param, :multipart => true . ただし、ajax を使用しない通常の形式では実行されます。