Estoy intentando que un conjunto de variables en el controlador de la aplicación salte al diseño de la aplicación.Rieles: Cómo obtener una variable de controlador de aplicación para el diseño de mi aplicación
si uso:
@var = 'foo'
... el diseño de la aplicación no sabe lo que estoy hablando
Si utilizo una variable global
$var = 'foo'
.. . el diseño de la aplicación funciona. Sin embargo, mis pruebas funcionales no funcionan:
# 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
necesito a disposición del diseño de la aplicación (cada página) esta var. ¿Pensamientos? ¿Debo hacer esto una sesión de var?
actualización
Sobre la base de algunos otros mensajes que estoy leyendo, que se considera la mejor práctica para colocarlos en el ayudante de aplicación, entonces llamarlos desde el diseño?
# Application helper
def get_var
Product.first
end
# Application layout
<% @var = get_var %>
<!DOCTYPE html>
<html lang="en">
<head>
...
Esto a) funciona en mi navegador yb) pasa las pruebas. ¿Es la mejor práctica? ¿Hay una manera más fácil/mejor?
Las variables se configuran sin el before_filter. De hecho, el diseño de la aplicación puede verlos si los configuro como variables globales. Pero a) Estoy tratando de evitar los globales yb) mis pruebas funcionales básicas no tienen idea de ellos (por alguna extraña razón) – jmccartie