2016-01-13 54 views
-2

呼籲on Rails的給定一個數組是這樣的:動態法協會

%w{ field_one, field_two, some_association.field_one } 

我需要遍歷這個和動態調用特定對象上的這些方法,正如這裏所描述:到目前爲止Ruby send method with rails associations

我有這個,這不正確讀取值:

field.include?('.') ? field.split('.').inject(some_object, :send) : some_object.send(field) 

此外,雖然,我需要調用:human_attribute_name在正確的類來生成標籤。什麼是乾淨的方式來實現這一目標?

+1

既然你有什麼工作,你能澄清你的意思是什麼「此外,雖然,我需要調用:在正確的類human_attribute_name生成標籤「。我不知道「正確」的類是什麼,或者你所說的「標籤」的意思請解釋這個問題,你所面臨的不是你已經解決了這個問題。 – engineersmnky

回答

0

目前尚不清楚你要完成的,但如果要我猜我會說你要做出某種CMS或報告系統中的哪些數據,以顯示定義可以通過改變一個用戶界面。有對這種事情的寶石但看到你這條賽道上...

通過:human_attribute_name我假設你的意思是要顯示的頁面的標籤上的友好名稱。首先,它會更適合使用字符串,而不是象徵,你就可以使用空格和多個字符。假設你永遠不打算對同一網頁重複的標籤名稱,你可以嘗試使用哈希,而不是一個數組。

fields = { 
      "Field One" => "field_one" , 
      "Field Two" => "field_two" , 
      "Field One Of Some Association" => "some_association.field_one" 
     } 

然後以與您引用的答案中顯示的方式類似的方式獲取數據。

data = {} 

fields.each_pair do | friendly_name, attribute | 
    data[friendly_name] = if attribute.include?('.') 
    attribute.split('.').inject(some_object, :send) 
    else 
    some_object.send(attribute) 
    end 
end 

這應該留給你一個哈希,你可以遍歷在你看來像這樣

{ 
    "Field One" => "Mr" , 
    "Field Two" => "Data", 
    "Field One Of Some Association" => "A Friend Of Mr Data" 
}