2015-01-21 150 views
2

我正在嘗試自定義Spree_i18n前端導航欄區域設置,並且將某些問題從select_tag更改爲link_to。我試圖讓它只出現兩個區域設置選擇EN/CN。最好的解決方案是什麼?Spree_i18n前端自定義區域設置

locale.js

load = function() { 
    return $('#locale-select select').change(function() { 
    return $.ajax({ 
     type: 'POST', 
     url: $(this).data('href'), 
     data: { 
     locale: $(this).val() 
     } 
    }).done(function() { 
     return window.location.reload(); 
    }); 
    }); 
}; 

navbar.html.erb

<li id="locale-select" data-hook> 
    <%= form_tag set_locale_path, class: 'navbar-form' do %> 
    <div class="form-group"> 
     <label for="locale" class="sr-only"><%= t(:'i18n.language') %></label> 
     <%= select_tag(:locale, options_for_select(supported_locales_options, I18n.locale), class: 'form-control', data: { href: set_locale_path }) %> 
     <noscript><%= submit_tag %></noscript> 
    </div> 
    <% end %> 
</li> 
+0

你有什麼問題? – MoMolog 2015-01-22 05:31:58

+0

我相信Spree正在使用會話來改變語言環境。當我嘗試<%= link_to'EN,set_locale_path(locale :: en),輸入:「Post」,data:{href:set_locale_path}%>。該URL將呈現http:// localhost:3000/localeset?locale = en,並將重定向到root_path。我想擺脫localeset?locale = en並讓它不重定向到root_path。 – 2015-01-22 09:37:04

回答

1

我定製的變種

<%= link_to 'en', spree.set_locale_path(switch_to_locale: :en), method: :post %>