2015-11-29 2 views
1

J'ai simple_form (3.2.0) et en combinaison avec globalize (5.0.0) et Rails4, je veux donner une option pour les utilisateurs de fournir une traduction pour deux langues (tchèque et anglais) sous la même forme de profil. Après avoir passé quelques heures, je suis coincé et je ne sais pas comment le faire.Champs traduits sous une forme (Globalize + Simple Form)

<%= simple_form_for current_user, :url => user_path, html: { data: {type: 'script'}, id: "nonprofit-profile-form" }, remote: true, authenticity_token: true do |f| %> 
    <%= f.simple_fields_for :non_profit, current_user.rolable do |np| %> 

<div id="czech" class="tab-content" style="display: none;"> 
    <div class="row"> 
     <%= np.input :description, as: :text, label: false, :required => true, placeholder: t(:profiles_nonprofit_field_description), :input_html => { :rows => 16 } %> 
    </div> 
</div> 

<div id="english" class="tab-content" style="display: none;"> 
    <div class="row">       
     <%= np.input :description, as: :text, label: false, :required => true, placeholder: t(:profiles_nonprofit_field_description), :input_html => { :rows => 16 } %> 
    </div> 
</div> 

    <% end %> 
<% end %> 

Toute personne qui résolvait le même cas avec les gemmes ci-dessus? Merci pour tout conseil. Miroslav

Forme:

enter image description here

SOLUTION

  1. Installez les pierres précieuses globaliser accesseurs (https://github.com/globalize/globalize-accessors)

  2. Ajoutez le code suivant au modèle:

    globalize_accessors :locales => [:en, :cs], :attributes => [:description] 
    
  3. Ajoutez le code suivant au contrôleur:

    def custom_params 
        permitted = NonProfit.globalize_attribute_names + [:name] + [:ico] + [:website] + [:non_profit_category_id] 
        params[:user][:non_profit].permit(*permitted) 
    end 
    
  4. Ajoutez le code suivant pour afficher:

    <div id="cestina" class="tab-content" style="display: none;"> 
        <div class="row"> 
         <%= np.input :description_cs, as: :text, label: false, :required => true, placeholder: t(:profiles_nonprofit_field_description), :input_html => { :rows => 16 } %> 
         <div class="remainChars"><span class="usedChars">0</span>/1000</div> 
        </div> 
    </div> 
    
    <div id="english" class="tab-content" style="display: none;"> 
        <div class="row"> 
         <%= np.input :description_en, as: :text, label: false, :required => true, placeholder: t(:profiles_nonprofit_field_description), :input_html => { :rows => 16 } %> 
         <div class="remainChars"><span class="usedChars">0</span>/1000</div> 
         </div> 
    </div> 
    
+0

Donc beaucoup de temps plus tard et ici travaillé aussi. Merci mon pote. –

Répondre

3

Ok, j'ai trouvé la solution:

  1. Installez la gemme Globalize Accessors (https://github.com/globalize/globalize-accessors)

  2. Ajoutez le code suivant au modèle:

    globalize_accessors :locales => [:en, :cs], :attributes => [:description] 
    
  3. Ajoutez le code suivant au contrôleur:

    def custom_params 
        permitted = NonProfit.globalize_attribute_names + [:name] + [:ico] + [:website] + [:non_profit_category_id] 
        params[:user][:non_profit].permit(*permitted) 
    end 
    
  4. Ajoutez le code suivant à la vue:

    <div id="cestina" class="tab-content" style="display: none;"> 
        <div class="row"> 
         <%= np.input :description_cs, as: :text, label: false, :required => true, placeholder: t(:profiles_nonprofit_field_description), :input_html => { :rows => 16 } %> 
         <div class="remainChars"><span class="usedChars">0</span>/1000</div> 
        </div> 
    </div> 
    
    <div id="english" class="tab-content" style="display: none;"> 
        <div class="row"> 
         <%= np.input :description_en, as: :text, label: false, :required => true, placeholder: t(:profiles_nonprofit_field_description), :input_html => { :rows => 16 } %> 
         <div class="remainChars"><span class="usedChars">0</span>/1000</div> 
         </div> 
    </div>