我有一个rails应用程序。我在我的应用程序控制器中使用了before_action来为所有已识别的用户获取一个变量(我在标题中使用它,所以我需要它用于我的所有视图)。
然而,它减慢了我不需要变量的所有帖子请求。我试图找到一种谷歌搜索方式,但无法找到任何东西。另外,我不确定我在做什么是应用程序控制器的最佳实践...
我怎样才能排除所有关于此before_action的帖子请求?
一种解决方案是在我的所有控制器中复制/粘贴代码,但它似乎不是最好的......
感谢。
答案 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]