アプリケーションコントローラに変数セットを取得しようとしていますが、アプリケーションレイアウトにバブルアップしています。Rails:アプリケーションレイアウトにアプリケーションコントローラ変数を取得する方法
私が使用している場合:
@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>
...
このa)は私のブラウザで動作し、b)テストに合格します。それはベストプラクティスですか?より簡単で良い方法がありますか?
変数はbefore_filterなしで設定されています。実際、アプリケーションのレイアウトは、グローバル変数として設定すると表示されます。しかし、私はグローバルを避けようとしています。b)私の基本的な機能テストでは、何らかの奇妙な理由のためにそれらのことが分かりません。 – jmccartie