애플리케이션 컨트롤러에 변수 세트를 가져 와서 애플리케이션 레이아웃을 버블 링하려고합니다.레일 : 애플리케이션 컨트롤러 변수를 내 애플리케이션 레이아웃으로 가져 오는 방법
내가 사용하는 경우 :
@var = 'foo'
... 응용 프로그램의 레이아웃은 내가 무슨 말인지 모르는에 대한
내가 전역 변수
$var = 'foo'
을 사용하는 경우
.. 응용 프로그램 레이아웃이 작동합니다. 그러나 내 기능 테스트가 작동하지 않습니다.# 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
이 변수는 응용 프로그램 레이아웃 (모든 페이지)에서 사용할 수 있어야합니다. 생각? 이 세션을 var로 만들어야합니까? 내가 읽고 있어요 몇 가지 다른 게시물을 기반으로 업데이트
, 그것은 다음, 응용 프로그램 도우미에 이들을 배치 레이아웃에서 호출하는 모범 사례로 간주됩니다?
# Application helper
def get_var
Product.first
end
# Application layout
<% @var = get_var %>
<!DOCTYPE html>
<html lang="en">
<head>
...
내 브라우저에서 작동하며 b) 테스트에 통과했습니다. 그것은 최선의 관행인가? 더 쉽고/좋은 방법이 있습니까?
변수는 before_filter없이 설정됩니다. 사실, 응용 프로그램 레이아웃을 전역 변수로 설정하면 응용 프로그램 레이아웃에서이를 볼 수 있습니다. 그러나 나는 전역을 피하려고 노력하고있다. b) 나의 기본적인 기능 테스트는 그들에 대해 전혀 모른다. (이상한 이유로) – jmccartie