我正在尝试使用remote =>来学习如何使用rails表格上的确如此。
关于ruby on rails官方网站的以下示例让我感到困惑。即使没有" format.js
"它也能很好地工作。 @user.save
调用失败时的代码。
# app/controllers/users_controller.rb
# ......
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.js
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
我期待错误响应,因为js格式不可用。我在这里缺少什么?
答案 0 :(得分:0)
我找到了我在IRC上寻找的答案。答案来自https://www.alfajango.com/blog/rails-3-remote-links-and-forms-data-type-with-jquery/:
较新版本的UJS驱动程序只是保留了jQuery的默认值 dataType为'/'。这告诉服务器,“给我任何你得到的东西。” 但是,这会使控制器以第一种格式响应 恰好列在响应者中(参见下一节)。因此,如果 format.html在format.js之前列出,应用程序将以响应方式响应 HTML响应(这意味着它将尝试重定向POST或DELETE 方法AJAX请求)。这也不理想。
所以在最新版本中,我们想出了如何设置默认值,例如 它告诉服务器,“我更喜欢JS,但我会采取任何措施 你已经得到了。“现在,如果在可用的中定义了format.js 响应者格式,JS将被返回。如果没有,控制器将 然后回复列出的第一种格式。 (参见讨论主题 此处。)