2016-08-11 3 views
0

Ich habe eine Iteration für alle meine Locales.Schienenformen, Feldname dynamisch mit Iterationsvariable ändern?

mag ich das :text und :title Feld bei jeder Iteration in Abhängigkeit von dem Gebietsschema zu ändern, zum Beispiel :title_en für Englisch, :title_ru für Russisch, :title_gr für griechische und so weiter.

Die en, ru, gr und so weiter sind die locale in meiner Iteration, also bekomme ich sie von dort.

<% I18n.available_locales.map.with_index(1) do |locale, index| %> 
    <%= f.text_field :title_(I want to use the locale here) %> 
<% end %> 

Wie gehe ich darüber? Was ist der beste Weg, es zu tun?

+1

Sie möchten nur das Symbol ändern: tilte_LOCALE abhängig vom Variablengebietsschema? –

+0

@BramVandenbogaerde ja genau, scheint ziemlich einfach, aber ich konnte es nicht finden. –

Antwort

3

Wenn Ihre form Builder Unterstützung all lokalen Umgebungen, können Sie dies versuchen:

<% I18n.available_locales.each.with_index(1) do |locale, index| %> 
    <%= f.text_field "title_#{locale}".to_sym %> 
<%end%> 

Und die title_ (locale) zu zeigen jede Beitrag (oder was auch immer Klasse, die Sie bekommen):

<% Post.all.order(created_at: :desc).each do |post| %> 
    <% I18n.available_locales.map.with_index(1) do |locale, index| %> 
    <%= post.send("title_#{locale}") %> 
    <% end %> 
<% end %> 
+0

Hey, tut mir leid, dich zu stören, aber darf ich dich noch etwas fragen. Ich versuche den Inhalt von 'article.title_ (locale)' jetzt und 'article." Title _ # {locale} ". To_sym' scheint nicht zu funktionieren. Irgendwelche Ideen? –

+0

Sorry, Sie zu stören, ich fand es tatsächlich, lassen Sie mich die Antwort für zukünftige Zuschauer bearbeiten. –

+0

@dyserone zeige mir den vollen Code, den du zu verwenden versuchst, genau 'article.title_ (loca le)'. –