2016-05-09 12 views
0

Die Frage wird woanders beantwortet, (how to render partial on everything except a certain action), aber nicht für eine Rails-Engine, die in meinem Fall den Application Controller teilt. Ich möchte nicht, dass mein Teil "_homeHeader.html.erb" auf den Seiten der Suchmaschine angezeigt wird. Die Engine ist Rapidfire, eine Umfrage. Ich versuchteWie blockiere ich eine partielle in Rails 4 Engine?

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

Aber das blockierte die teilweise überall. Der Header enthält ein Login - Logout, das mit der Engine kollidiert. Ich habe auch versucht, einen Dummy "_homeHeader.html.erb" im Ordner views für Rapidfire zu setzen, aber das hat nicht funktioniert; Ich vermute, die Layout-Ansicht hat Vorrang.

Auf Anregung von Michael fixiert ich die Syntax

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

aber es hat nicht funktioniert. es ist immer noch mit diesem Fehler auf einem Login Würgen:

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

Antwort

1

Es ist eine Syntax Problem mit der unless Aussage. Sie vergleichen einen Hash, wenn Sie nur eine einfache Bedingung benötigen.

Versuchen Sie stattdessen:

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

Beachten Sie, dass wir die empfohlene Methode verwenden den Namen des Controllers zu bestimmen. Weitere Informationen finden Sie unter Can I get the name of the current controller in the view?.

+0

Ich reparierte die Syntax –

+0

Hat es für Sie funktioniert? –

+0

Nein Michael. Ich habe meinen Beitrag überarbeitet. Danke –

Verwandte Themen