Rails:使用response_to而无需响应

时间:2019-05-21 09:20:21

标签: ruby-on-rails

对于Ruby on Rails项目,我必须实现两种不同的方法来检查请求的发送者是否具有访问权限,具体取决于“ Accept”-头。我将支票放置在Application控制器中,并使用before_action从其他控制器中调用它。 知道Rails可以处理不同的“ Accept”类型时,我想执行以下操作:

class ApplicationController < ActionController::Base

#my function to test, if the sender can access
  def authenticate
    respond_to do |format|
      format.json {
        #do the test for an API request
      }
      format.html {
        #do the test for a HTML website request
      }
    end
  end
end

由于我的response_to不会总是调用redirect_to或render(如果发送者有权访问,则将执行另一个控制器方法),我想知道我是否仍然可以像这样使用它。还是我应该分析标题?

1 个答案:

答案 0 :(得分:2)

response_to的要点是根据请求的类型(HTML,JS,JSON等)执行不同的操作:因此,无论您是否需要redirect_to或呈现,都没有关系。

如果必须根据收到的请求类型更改方法的行为,请随时使用它;如果无论行为如何都是相同的,则无需response_to。