Rails:如何在应用程序控制器

时间:2017-12-02 06:29:04

标签: ruby-on-rails controller

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

然而,它减慢了我不需要变量的所有帖子请求。我试图找到一种谷歌搜索方式,但无法找到任何东西。另外,我不确定我在做什么是应用程序控制器的最佳实践...

我怎样才能排除所有关于此before_action的帖子请求?

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

感谢。

2 个答案:

答案 0 :(得分:2)

你可以通过多种方式做到这一点。一个只使用和之前的行动,如下所示 除了:

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

如果您想跳过任何其他成员或收集路线,那么如果您的应用程序有许多路线,则必须使用skip_before_action,然后您必须为所有控制器添加跳过。

如果你想仅仅为帖子请求跳过它,那么如果要排除所有帖子请求,你可以改变你的方法(before_action方法)。 (请记住它会接受包括放置和删除在内的所有内容)。

def method_name
  return if request.post?
  do your stuff
end

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

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

答案 1 :(得分:1)

停止在帖子请求上调用before_action

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