Rails Edge Guides,AJAX示例 - 为什么同时使用'format.js'和'format.json'?

时间:2013-10-13 23:21:17

标签: javascript jquery ruby-on-rails ajax json

"Working With Javascript" section of the Rails Edge Guides中,给出了如何在“用户”控制器中构建“创建”动作的示例,以便将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

我读过here,需要'format.js'和'format.json',因为Javascript和JSON是不同类型的响应。我的问题是,如果在'create'动作的if语句的前半部分中指定了两种格式,为什么下半场也不需要这两种格式?这是否意味着Javascript在成功时使用'create.js.erb'文件,而不是在失败时使用?

1 个答案:

答案 0 :(得分:0)

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

format.js   {}

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

如果您确实想要在发生故障时执行js块,您可以像其他格式一样执行此操作。