簡體   English   中英

控制器救援模塊中的rails response_to

[英]rails respond_to in controller rescue block

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手動上傳。

為了更好的可讀性,使用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

我認為它將起作用。

營救塊不應該受到指責。 如果您的routes.rb使用如下選項指定,則會發生這種情況:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM