14 Stimmen

Geländer: Wie bekomme ich eine Controller-Variable in mein Applikationslayout?

Ich versuche, eine im Anwendungscontroller gesetzte Variable an das Anwendungslayout weiterzuleiten.

Wenn ich benutze:

@var = 'foo'

...das Anwendungslayout weiß nicht, wovon ich rede

Wenn ich eine globale Variable verwende

$var = 'foo'

... das Layout der Anwendung funktioniert. Meine Funktionstests funktionieren jedoch nicht:

# application layout
# my var is an AR object
$var.name

# Stock functional test
class HomeControllerTest < ActionController::TestCase
  test "should get index" do
    get :index
    assert_response :success
  end
end

# test:functionals 
ActionView::Template::Error: undefined method `name' for nil:NilClass

Ich benötige diese Variable für das Anwendungslayout (jede Seite). Was denken Sie? Muss ich dies zu einer Sitzungsvariable machen?

更新情報

Basierend auf ein paar andere Beiträge, die ich lese, ist es als beste Praxis, diese in der Anwendung Helfer zu platzieren, dann rufen Sie sie aus dem Layout?

# Application helper
def get_var
   Product.first
end

# Application layout
<% @var = get_var %>
<!DOCTYPE html>
<html lang="en">
<head>
...

Dies a) funktioniert in meinem Browser und b) besteht Tests. Ist dies die beste Vorgehensweise? Gibt es einen einfacheren/besseren Weg?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X