控制器救援区

时间:2017-06-07 09:59:31

标签: ruby-on-rails rescue respond-to

respond_to无法在控制器救援区内工作:

def create
  respond_to do | format |
    format.json { render json: SomeManager.new(some_params).json }
    format.html do
      SomeManager.new(some_params)
      render :new, notice: 'it worked'
    end
  end
rescue => e
  respond_to do | format |
    format.json { render json: {error: 'did not work because reasons'}.to_json, status: :forbidden }
    format.html { render :new, alert: 'did not work because reasons' }
  end
end

^ API的控制器,可以响应API json上传或使用UI手动上传。

2 个答案:

答案 0 :(得分:1)

为了更好的可读性,请改为使用begin .. rescue代替:

def create
  respond_to do | format |
    begin
      format.json { render json: SomeManager.new(some_params).json }
      format.html do
        SomeManager.new(some_params)
        render :new, notice: 'it worked'
      end
    rescue => e
      format.json { render json: {error: 'did not work because reasons'}.to_json, status: :forbidden }
      format.html { render :new, alert: 'did not work because reasons' }
    end
  end
end

我认为它会起作用。

答案 1 :(得分:0)

救援区块不应该受到指责。如果使用如下选项指定routes.rb,则会发生这种情况:

resources :widgets, defaults: {format: :the_spanish_inquisition}