1

Rails Edge 指南的“使用 Javascript”部分中,给出了一个示例,说明如何在“用户”控制器中构建“创建”操作,以便将 AJAX 集成到创建操作中:

# 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

我在这里读到“format.js”和“format.json”都是需要的,因为 Javascript 和 JSON 是不同类型的响应。我的问题是,如果在“创建”操作的 if 语句的前半部分中指定了这两种格式,为什么在后半部分也不需要这两种格式?这是否意味着 Javascript 在成功时使用“create.js.erb”文件,但在失败时不使用?

4

1 回答 1

0

是的,你是对的。根据浏览指南,看起来你不想在失败的情况下对 js 做任何事情。如果你要放

format.js   {}

在失败块中,然后它会尝试执行该render @user部分,这可能会导致错误。

如果你真的想在失败的情况下执行一个 js 块,你可以像其他格式一样做。

于 2013-10-14T05:55:22.790 回答