【问题标题】:How to block a partial in Rails 4 engine?如何阻止 Rails 4 引擎中的部分内容?
【发布时间】: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...

【问题讨论】:

    标签: ruby-on-rails


    【解决方案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) 视图中,以便我们查看发生了什么。
    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    相关资源
    最近更新 更多