Rails rails respond_to 新手问题

windwiny · 2014年07月24日 · 最后由 huacnlee 回复于 2014年07月25日 · 3160 次阅读

rails 4 官方教程里有这样的代码

# 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

else 条件里没有format.js {},执行到的时候不是会报错吗?

问题 2,如果 action 里没有 respond_to,只要 views 里能找到 create.XXX.erb,浏览器地址栏加任意已注册 MIME 扩展名都不会出错。 如果 action 里有 respond_to,没有用 format.xxx 列出的,即使能找到 views 里的模板,也会出错?

问题 3,js 好像又比较特殊,只要有 format.html,访问 create.js 取到的也是 html,怎么会这样?

  1. 不会爆错,只有你在请求 POST users.json 的时候才会
需要 登录 后方可回复, 如果你还没有账号请 注册新账号