Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如何在应用程序控制器中排除对before_操作的post请求_Ruby On Rails_Controller - Fatal编程技术网

Ruby on rails Rails:如何在应用程序控制器中排除对before_操作的post请求

Ruby on rails Rails:如何在应用程序控制器中排除对before_操作的post请求,ruby-on-rails,controller,Ruby On Rails,Controller,我有一个rails应用程序。我在我的应用程序控制器中使用before_操作为所有已识别的用户获取一个变量(我在标题中使用它,所以我需要在所有视图中使用它) 但是,它会减慢所有不需要变量的post请求。我试着用谷歌搜索,但什么也找不到。另外,我不确定我所做的是应用程序控制器的最佳实践 在采取行动之前,我如何排除对此的所有post请求 一个解决方案是在我所有的控制器中复制/粘贴代码,但这似乎不是最好的 谢谢。在对post请求采取行动之前停止呼叫 before_action :method_name,

我有一个rails应用程序。我在我的应用程序控制器中使用before_操作为所有已识别的用户获取一个变量(我在标题中使用它,所以我需要在所有视图中使用它)

但是,它会减慢所有不需要变量的post请求。我试着用谷歌搜索,但什么也找不到。另外,我不确定我所做的是应用程序控制器的最佳实践

在采取行动之前,我如何排除对此的所有post请求

一个解决方案是在我所有的控制器中复制/粘贴代码,但这似乎不是最好的


谢谢。

在对post请求采取行动之前停止呼叫

before_action :method_name, except: [:create, :update]

你可以用很多方法来做。一个只使用,除了在下面的操作之前 除了:

before_action :method_name, except: %I[create update]
如果要跳过任何其他成员或集合路由,则必须使用“先跳过后跳过”操作。如果应用程序有多个路由,则必须为所有控制器添加“跳过”

如果您只想跳过post请求,那么如果您想排除所有post请求,您可以将方法(before_action method)更改如下。(请记住,它将接受所有内容,包括put和delete)

在其他方面,我们可以只允许get请求再做一件事

def method_name
  return unless request.get?
  do your stuff
end

我不知道我也可以在应用程序控制器中使用它!谢谢,它起作用了。
def method_name
  return unless request.get?
  do your stuff
end