Javascript Rails remote=>;真正的困惑(没有格式.js?)
我正在尝试学习如何在窗体上使用rails和remote=>true RubyonRails官方网站上的以下示例让我感到困惑。当Javascript Rails remote=>;真正的困惑(没有格式.js?),javascript,ruby-on-rails,ajax,asynchronous,Javascript,Ruby On Rails,Ajax,Asynchronous,我正在尝试学习如何在窗体上使用rails和remote=>true RubyonRails官方网站上的以下示例让我感到困惑。当@user.save调用失败时,即使没有“format.js”代码,它也能正常工作 # app/controllers/users_controller.rb # ...... def create @user = User.new(params[:user]) respond_to do |format| if @user.save for
@user.save
调用失败时,即使没有“format.js
”代码,它也能正常工作
# 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格式不可用。我在这里遗漏了什么?我在IRC上找到了我想要的答案。答案来自: 更新版本的UJS驱动程序只需保留jQuery的默认值 “/”的数据类型。这告诉服务器,“给我你所有的。” 但是,这将使控制器以第一种格式响应 这恰好列在响应程序中(见下一节)。所以如果 format.html列在format.js之前,应用程序将以 HTML响应(这意味着它将尝试重定向以进行发布或删除 方法(AJAX请求)。这也不理想 所以在最新版本中,我们找到了如何设置默认值,比如 它告诉服务器,“我更喜欢JS,但我会选择任何东西 现在,如果在可用的 将返回响应程序格式JS。如果没有,控制器将 然后使用列出的第一种格式进行响应。(参见讨论主题) 在这里。) 讨论主题: