我只有一個模糊的概念在這個措辭,這樣的問題需要:保持一個實例變量作爲一個實例變量,而不是其內容
我有一組我路過我的軌控制器上的值定期到一個小部件,每頁之間略有不同,從我傳遞給它。這對每一個控制器都開始變得笨拙,所以我添加了一個小類來幫助連接這個過程(下面的基本出發點)。
#return dashcontroller hash from more succinct cues
module DashControl
class DashControl
attr_accessor :title, :instance, :actions
def initialize(title='default title', instance='default instance', actions={})
@title = title
@instance = instance
initialize_actions(actions)
end
def initialize_actions(actions)
actions.kind_of?(Hash) ? @actions = actions : initialize_tag(actions)
end
def initialize_tag(tag)
case tag
when :manage_default
@actions = {:statusactions => [],
:formactions => [ ['#tabaccount', 'addaccount'],
['#tabuser', 'addusers'],
['#tabadd','adddomain'] ],
:linkactions => [ [] ],
:filteractions => [ [] ] }
when :none
@actions = {}
#when
# @actions = {}
else
@actions = @actions
end
end
def dashcontroller
{:title => @title, :instance => @instance, :actions => @actions }
end
end
end
所以基本上我只需要傳遞的this.dashcontroller
一個實例,我也得到我需要在我的控制器少了很多混亂的哈希值。問題是與@instance
變量。我想要傳入正在使用的實例@book
,@account
等,並且它出現爲@book
,@account
等等。相反,我得到了我在那裏放入的任何內容,如:instance => (contents of that instance)
。對我來說這並不像我之前剛剛使用的那樣好。 @account
,然後使用它,但看着它可能不會在窗口小部件中產生任何不同,因爲我在處理代碼並處理代碼。
基本上我的問題是如何通過這樣的類來推送實例變量,並且在進入時仍然具有accessibile,而無需在另一側執行任何後向翻轉和變換。可能有更好的方法,但這是我目前正在使用的方法。
編輯:僞代碼
DashControl::DashControl.new("Catchy Title", @book, :none).dashcontroller
#=> {:title => "Catchy Title", :instance => @book, :actions => {} }
我想我可以使用它,就像我說的我更多的東西比實際的錯誤或什麼難的是如何認識流動的問題。我不想在實例的另一端做更多的體操,儘管內容在那裏,而這些都是我真正需要的,我只需要一點點的思考就可以減少混亂。我真的需要改進我通過這件事發送的內容,或者使用它來進一步完善我發送的內容是現在要消除的底線課程。
編輯:
我結束了這個折騰,但它是一個學習的經驗......我回去小部件,我知道當我最初設置小部件不止,所以我已經能夠設置它只需要實例變量並引導它所需的內容,而不需要添加其他類,清理我的控制器並將很多事情交回給我懷疑它應該/可能已經啓動的小部件。
你能給你想如何最終出現的僞代碼的例子嗎?比如,你想傳遞給你的函數,你想要結果是什麼? – Veraticus 2012-02-23 23:28:30