Ist es möglich, den Namen der aktuell gerenderten Ansicht aus dem internen Layout abzurufen?Wie erhält man den aktuellen View-Namen aus der Layout-Vorlage in Rails?
Antwort
ich so etwas für CSS Namespacing tat
# config/initializers/action_view.rb
ActionView::TemplateRenderer.class_eval do
def render_template_with_tracking(template, layout_name = nil, locals = {})
# with this gsub, we convert a file path /folder1/folder2/subfolder/filename.html.erb to subfolder-filename
@view.instance_variable_set(:@_rendered_template, template.inspect.gsub(/(\..*)/, '').split('/')[-2..-1].join('-'))
out = render_template_without_tracking(template, layout_name, locals)
@view.instance_variable_set(:@_rendered_template, nil)
return out
end
alias_method_chain :render_template, :tracking
end
# application.html.erb
<body class="<%= :@_rendered_template %>" >
Verfahren active_template_virtual_path Methode liefert die Vorlage als Name in der folgenden Form "controller/action"
class ActionController::Base
attr_accessor :active_template
def active_template_virtual_path
self.active_template.virtual_path if self.active_template
end
end
class ActionView::TemplateRenderer
alias_method :_render_template_original, :render_template
def render_template(template, layout_name = nil, locals = {})
@view.controller.active_template = template if @view.controller
result = _render_template_original(template, layout_name, locals)
@view.controller.active_template = nil if @view.controller
return result
end
end
Funktioniert nicht für mich. Ich versuche zu <% = controller.active_template%> in der Vorlage. Es heißt 'undefined Methode' active_template'' – Evgenii
<% __FILE__%> gibt Ihnen den Namen der aktuellen Vorlage – Naveed
Das sagt: "nicht initialisierte Konstante ActionView :: CompiledTemplates :: FILE" – user1934428
hatte ich ein ähnliches Frage. Ich fand <%= params[:controller] %>
und <%= params[:action] %>
, um meinem Bedarf zu entsprechen, der war, den Kontrollernamen und den Tätigkeitsnamen als Klassen auf dem body-Tag hinzuzufügen.
Nur für den Fall, dass jemand hilft. :)
Verwenden <% __FILE__ %>
um den vollständigen Dateipfad der aktuellen Ansicht, aber man kann es nur von innerhalb die Datei selbst verwenden, ohne einige Helfer schreiben
Ich bin derzeit eine modifizierte Version von Peter Ehrlich mit Lösung. Die resultierende Zeichenfolge hat die Form controller_name/view_name
, z. users/new
, was bedeutet, dass es später direkt an render
übergeben oder für andere Zwecke geändert werden kann. Ich habe das nur mit Rails 4.2 probiert, obwohl ich soweit weiß, dass es bis in die 3. x es funktionieren sollte.
ActionView::Base.class_eval do
attr_accessor :current_template
end
ActionView::TemplateRenderer.class_eval do
def render_template_with_current_template_accessor(template, layout_name = nil, locals = {})
@view.current_template = template.try(:virtual_path)
render_template_without_current_template_accessor(template, layout_name, locals)
end
alias_method_chain :render_template, :current_template_accessor
end
Zum Zwecke der Fehlersuche können Sie gem 'current_template' von here verwenden.
Dieses Schmuckstück prüft die Logdatei und zeigt den Dateinamen der Ansicht/Teilvorlage an.
Zum Beispiel:
Sie können aber auch einfach diese Zeile hinzufügen
<%= "#{`tail log/development.log`}".scan(/\s[a-z]+\/\S+/) %>
zum Layout/application.html.erb.
- 1. Wie erhält man den aktuellen GoogleMap-Zoomfaktor?
- 2. Wie erhält man den aktuellen Index in der Array-Prototypenkarte?
- 3. Wie erhält man den aktuellen Stadtnamen in der Symbolleiste?
- 4. Wie erhält man den aktuellen Ressourcennamen in ItemProcessor?
- 5. Wie erhält man den aktuellen Routennamen in Laravel 5?
- 6. In MVC3, wie erhält man den aktuellen Controller-Namen?
- 7. Wie erhält man den ursprünglichen Wert eines Attributs in Rails
- 8. Wie erhält man den aktuellen Namen einer Immobilie durch Reflektion?
- 9. Strukturierung der Layoutvorlage in Haml
- 10. Wie erhält Google Talk den aktuellen Musiktitel?
- 11. Wie erhält man den aktuellen Kontextnamen von rspec?
- 12. Wie erhält man den aktuellen Projektnamen im C# -Code?
- 13. iOS erhält den aktuellen Adressnamen - mkplacemark?
- 14. Wie erhält man den Dateinamen der aktuellen Datei in einem Perl-Einzeiler?
- 15. Rails - wie man Fixture-Daten aus Tests erhält
- 16. Layoutvorlage - Flexbox
- 17. Wie erhält man den Objektnamen?
- 18. Wie erhält man den Wert der Funktionsargumente?
- 19. Wie erhält man den Wert der ersten Spalte der aktuellen Zeile von Winform DataGridView?
- 20. Wie kann man auf Steuerelemente in listview's Layoutvorlage zugreifen?
- 21. Wie erhält man den Namen der aktuellen Methode in Delphi 7?
- 22. Wie erhält man den neuesten Tag-Namen?
- 23. Wie erhält man den Dezimalwert?
- 24. Wie erhält man den Namen der Datatable-Spalte?
- 25. Wie erhält man den Prozentsatz der Speichernutzung eines Prozesses?
- 26. Wie erhält man den Städtenamen aus dem Längen- und Breitengrad in der Telefonlücke?
- 27. Wie erhält man den Artikelindex in PowerApps?
- 28. Wie erhält man eine Schätzung aus der Regression in Excel?
- 29. Wie erhält man den Elementwert in jQuery?
- 30. Wie erhält man den Namen des Klassifikators aus Mavens Eigenschaften?
Warum möchten Sie das tun? –
Welche Schienen ist das? –