2016-06-23 51 views
0

我需要一個幫助器,它可以獲取與用戶相關的多個值並將它們翻譯並以字符串的形式返回到我的視圖。幫手翻譯多個值

我在想是這樣的:

在助手:

def interests(user) 
    @all_interests = user.interests 
    @all_interests.each_with_index do |interest| 
    t('user.#{interest}') + ", " 
    if index == @all_interests.size - 1 
     t('user.#{interest}') + "." 
    end 
    end 

在視圖:

<p> My interests are: <%= interests(@user) %> </p> 

期望的結果將是例如:

我的興趣是:工程,體育,園藝。

但在這一刻它返回一個數組像以下:

我的利益是: 「工程」, 「體育」, 「花園」]

編輯:所有值在我的i18n文件中正確翻譯。

回答

2

您應該映射的結果,並用「」你的情況加入他們的行列:

def interests(user) 
    user.interests.map {|interest| t("user.#{interest}") }.join(', ') 
end 

BTW,沒有必要設置一個實例變量。輔助方法已經返回結果。

+0

謝謝,這似乎讓我先行一步,雖然它仍然似乎沒有傳遞正確的價值翻譯 #{興趣}

+2

雙引號應該用於字符串插值工作 – Vasfed

+1

我忘了提,但請拿一個在'.to_sentence'方法中,您可以指定連接器並使其更具人類可讀性和可翻譯性。例如:'%w(abc).to_sentence#=> a,b和c' – Leito

1

更好地利用陣圖+加盟:

def interests(user) 
    user.interests.map{|i| t("user.#{i}")}.join(', ') 
end 

,並考慮:

<p> My interests are: <%= interests(@user) %>. </p>