2015-12-06 2 views
0

Мне интересно, как получить выпадающее меню, которое переключит язык страницы на работу. В настоящее время у меня есть следующее:Autosubmit языковое dropdow в Rails 4

<%= select('locale', 'id', %w(English Español Italiano 日本語 한국어), :onchange => "this.form.submit()") %> 

Любая идея, как я могу заставить это переключить язык страницы? В настоящее время я передаю локаль через хеш params.

+1

Предоставляет ли форму? В противном случае проверьте JS, потому что это не похоже на то, что Rails имеет к этому какое-то отношение. –

ответ

0

Есть несколько проблем:

  1. Вы пытаетесь представить поле выбора ..... но где это представить?
  2. Как вы управляете языками на своей странице?

-

Когда подачи с JS, вы должны помнить, что он должен где-то представить.

Как атрибут <form>action, вашему JS требуется место для отправки запроса на отправку. Обычно это обрабатывается с помощью формы, но также может быть введен вручную с помощью Ajax.

Вы можете использовать это:

#app/assets/javascripts/application.js 
$(document).on("change", "select", function(e) { 
    $.ajax({ 
     url: "your/url", 
     data: $(this).value(), 
     success: function(data) { ... }, 
     error: function(data) { ... } 
    }); 
}); 

Это займет введенное значение select коробки и отправить данные в преформатированный маршрут в приложении Rails. Это приводит красиво на мой второй вопрос - как вы получаете язык, чтобы оставаться в приложении ...

-

Независимо от вашей структуры, вы должны дать ваше Rails приложение способа определить язык, который вы выбрали.

Если необходимо установить session variable, вам необходимо передать свои данные в контроллер Rails.

Чтобы сделать это, в первую очередь необходимо обеспечить вас есть маршруты, а затем действие контроллера, необходимое для обработки запроса:

#config/routes.rb 
post :language, to: "application#language" 

#app/controllers/application_controller.rb 
class ApplicationController < ActionController::Base 
    def language 
     session[:language] = params[:language] #-> this needs to be refactored 
    end 
end 

Затем вы сможете перейти обратно некоторый ответ или команду для вызова изменения языка на странице.

Хотя установка языка в бэкэнд, как описано выше, может показаться утомительным, это даст вам возможность установить весь параметр языка для сайта - IE, если вы хотите использовать его для валюты и т. Д., Это будут доступны во всех необходимых действиях.

Надеюсь, это поможет.