Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Rails remote=>;真正的困惑(没有格式.js?)_Javascript_Ruby On Rails_Ajax_Asynchronous - Fatal编程技术网

Javascript Rails remote=>;真正的困惑(没有格式.js?)

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

我正在尝试学习如何在窗体上使用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
      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。如果没有,控制器将 然后使用列出的第一种格式进行响应。(参见讨论主题) 在这里。)

讨论主题: