2011-08-11 39 views
2

我的局部變量中有幾個局部變量,可能會或可能不會被渲染它們的模板傳遞,例如:on_question_page。如果我在頁面上,我將它傳遞爲true,但在其他地方我跳過它。什麼是引用一個變量的緊密方法,這個變量可能沒有在局部中定義?

問題是我無法直接引用該變量,因爲在未定義的位置會引發錯誤。

這意味着,我結束了我的泛音上有很多這樣的代碼:

on_question_page = defined?(on_question_page) ? on_question_page : false 

凌亂。有更簡潔的方式來訪問這些可選變量嗎?

回答

1

您可以使用on_question_page ||= false分配false如果on_question_page未定義或falsenil,那就是,當事情與布爾運算測試,計算結果爲false

0

如何在總是包含的位置定義默認值,並在您的偏好中覆蓋它?

這樣你就不需要檢查它是否可用,如果需要的話你甚至可以很容易地改變默認值。

+0

這會工作,但我想要更本地化的東西 - || =解決方案最後做到了 –

1

您可以使用||=操作

on_question_page ||= false 
+0

這就是答案 - 我投票了正確的屏幕上的第一個。謝謝 –

0

我認爲,解決辦法是使用綁定和一個幫手:

# whatever_helper.rb 
def local_set(ref, view_binding) 
    eval(ref.to_s, view_binding) 
rescue NameError 
    false 
end 

# my_neet_view.html.erb 
<h1>Question</h1> 

<%= local_set("on_question_page", binding) %> 

綁定使我們能夠通過視圖的評價上下文的助手,做所有的髒活在那裏。這將邏輯移出視圖並轉移到幫手。

+0

好的,我的解決方案更復雜。我從來沒有想過我會在某個地方使用綁定,我想我已經超越了自己。 –

+0

:)謝謝 –

相關問題