2015-01-21 104 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 %>