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?