如何阻止 Rails 4 引擎中的部分内容?

Posted

技术标签:

【中文标题】如何阻止 Rails 4 引擎中的部分内容?【英文标题】:How to block a partial in Rails 4 engine? 【发布时间】:2016-09-04 10:37:51 【问题描述】:

这个问题在其他地方得到了回答,(how to render partial on everything except a certain action) 但不适用于 Rails 引擎,在我的例子中,它共享应用程序控制器。我不希望我的部分“_homeHeader.html.erb”出现在引擎的页面上。引擎是速射的,一项调查。我试过了

<%=render :partial =>'layouts/homeHeader' unless controller => 'rapidfire' %

但这在任何地方都挡住了局部。头部包含一个login-logout,与引擎冲突。我还尝试在视图文件夹中放置一个虚拟的“_homeHeader.html.erb”以进行快速射击,但这没有用;我猜布局视图有优先权。

在 Michael 的建议下,我将语法修改为

<%= render :partial =>'/layouts/homeHeader' unless (controller.controller_name == "rapidfire/question_groups") %> 

但它没有用。它仍然在登录时因此错误而窒息:

undefined local variable or method `destroy_user_session_path' for #<#<Class...

【问题讨论】:

【参考方案1】:

这是unless 语句的语法问题。当您只需要一个简单的条件时,您正在比较一个哈希值。

试试这个:

<%= render :partial => "layouts/homeHeader" unless (controller.controller_name == "rapidfire") %>

请注意,我们使用推荐的方法来确定控制器的名称。有关更多信息,请参阅Can I get the name of the current controller in the view?。

【讨论】:

我修正了语法 没有迈克尔。我修改了我的帖子。谢谢 我认为这是一个不同的问题。它与原始问题“如何阻止 Rails 4 引擎中的部分”无关。如果您可以创建一个新问题并发布视图代码和部分代码,那将是处理新错误的好方法。 实际上,它应该阻止驻留在部分中的登录。所以我的任务是如何阻止部分。这是最初的错误,也是最初的问题。 问题中不包含这些信息。请将代码发布到您的 a) 控制器、b) 布局和 c) 视图中,以便我们查看发生了什么。

以上是关于如何阻止 Rails 4 引擎中的部分内容?的主要内容,如果未能解决你的问题,请参考以下文章

阻止用户返回并查看以前提交的表单Rails

如何阻止网页自行刷新(至少部分内容)?

scroll时怎么阻止body页面的滚动

Rails ActiveJob - 如何阻止作业在 before_enqueue 中排队

如何实现不阻止其用户的引擎类

Firefox 中的“阻止加载混合活动内容”