我有一个简单的表格:
<%= form_for [current_user, @bookcase], :id => "shelf_update_form", :remote => true, :html => { :multipart => true} do |f| %>
<input id="bookcase_image" class="file" type="file" name="bookcase[image]" size="13">
<% end %>
在选择文件时自动上传:
$("#shelf_update_form").change(function() {
$("#shelf_update_form").submit();
});
我希望更新操作呈现js视图,但默认情况下它会呈现html。我尝试强制它像这样呈现js:
respond_to do |format|
format.js
end
但后来我收到了这个错误:
NetworkError: 406 Not Acceptable
即便如此,我的日志报告:
Processing by BookcasesController#update as HTML
如何让它作为JS处理呢?
更新:
观点:
triggerAjaxHistory("<%= @href %>", false);
我也可以使用更通用的视图获得相同的结果:
alert("I work now!")
答案 0 :(得分:0)
在控制器中,执行
respond_to do |format|
format.js if request.xhr?
end
您的观点是否以.js.erb
命名?
您的布局中还有以下内容吗?
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
logger.info whatever_message
命令以确保执行控制器操作并进入正确的视图吗?如果在控制器中专门指定js格式为
会发生什么 class UserController < ApplicationController
respond_to :js, :only => :update, :layout => 'false`
form_for
中的格式指定为:format => :js