Переведенные поля в одной форме (Globalize + Simple Form)

У меня есть simple_form (3.2.0) и в сочетании с globalize (5.0.0) и Rails4 я хочу предоставить пользователям возможность предоставлять перевод на два языка (чешский и английский) в одной и той же форме профиля. Проведя несколько часов, я застрял и не знаю, как это сделать.

<%= 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 %>

Кто-нибудь решал тот же случай с драгоценными камнями выше? Спасибо за любые советы. Мирослав

Форма:

введите здесь описание изображения

РЕШЕНИЕ

  1. Установите gem Globalize Accessors (https://github.com/globalize/globalize-accessors)

  2. Добавьте в модель следующий код:

    globalize_accessors :locales => [:en, :cs], :attributes => [:description]
    
  3. Добавьте в контроллер следующий код:

    def custom_params
        permitted = NonProfit.globalize_attribute_names + [:name] + [:ico] + [:website] + [:non_profit_category_id]
        params[:user][:non_profit].permit(*permitted)
    end
    
  4. Добавьте следующий код для просмотра:

    <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>  
    

person Miroslav    schedule 29.11.2015    source источник
comment
Столько раз спустя и здесь тоже работало. Спасибо друг.   -  person Luiz Marques    schedule 22.02.2017


Ответы (1)


Хорошо, я нашел решение:

  1. Установите гем Globalize Accessors (https://github.com/globalize/globalize-accessors)

  2. Добавьте в модель следующий код:

    globalize_accessors :locales => [:en, :cs], :attributes => [:description]
    
  3. Добавьте в контроллер следующий код:

    def custom_params
        permitted = NonProfit.globalize_attribute_names + [:name] + [:ico] + [:website] + [:non_profit_category_id]
        params[:user][:non_profit].permit(*permitted)
    end
    
  4. Добавьте следующий код для просмотра:

    <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>  
    
person Miroslav    schedule 12.12.2015