मैं एप्लिकेशन लेआउट में बबल करने के लिए एप्लिकेशन नियंत्रक में एक चर सेट सेट करने का प्रयास कर रहा हूं।रेल: मेरे एप्लिकेशन लेआउट में एक एप्लाकेशन कंट्रोलर वैरिएबल कैसे प्राप्त करें
अगर मैं का उपयोग करें:
@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 उपलब्ध है। विचार? क्या मुझे इसे एक सत्र var बनाने की ज़रूरत है?
अद्यतन
कुछ अन्य पदों मैं पढ़ रहा हूँ के आधार पर यह आवेदन सहायक में इन जगह, फिर उन्हें लेआउट से फोन सबसे अच्छा अभ्यास माना जाता है?
# Application helper
def get_var
Product.first
end
# Application layout
<% @var = get_var %>
<!DOCTYPE html>
<html lang="en">
<head>
...
यह ए) मेरे ब्राउज़र में काम करता है और बी) परीक्षण पास करता है। क्या यह सबसे अच्छा अभ्यास है? क्या कोई आसान/बेहतर तरीका है?
चर पहले/filter w/o सेट किए जा रहे हैं। वास्तव में, यदि मैं उन्हें वैश्विक वर्र्स के रूप में सेट करता हूं तो एप्लिकेशन लेआउट उन्हें देख सकता है। लेकिन ए) मैं ग्लोबल्स से बचने की कोशिश कर रहा हूं और बी) मेरे बुनियादी कार्यात्मक परीक्षणों के बारे में कोई जानकारी नहीं है (कुछ अजीब कारणों से) – jmccartie