Rails: локали, использующие form_with? - PullRequest
0 голосов
/ 15 октября 2018

Как использовать локали и form_with?Под языком я подразумеваю /en вместо /?locale=en.

Это часть моего файла просмотра:

<%= form_with(model: @model, local: true, locale: I18n.locale) do |form| %>

После отправки формы я получаю следующееошибка:

No route matches {:action=>"show", :controller=>"model_name", :format=>nil, :locale=>#<ModelName id: 2, created_at: "2018-10-15 11:07:36", updated_at: "2018-10-15 11:08:09">}, missing required keys: [:id], possible unmatched constraints: [:locale]

Обратите внимание, как устанавливается языковой стандарт для данной модели ...

Это мой routes.rb:

root 'model_name#new'

scope ':locale', locale: /[a-z]{2}/ do
  root 'model_name#new'
  resources :model_name, only: [:create, :show]
end

Я не понимаю, почему мне нужно установить root дважды, но ...

Спасибо!

1 Ответ

0 голосов
/ 15 октября 2018

root внутри области означает корень области.

Пример:

root # matches / 
scope ':locale' do
  root # matches /en/
  resources :foos # matches /en/foos, /en/foo/1, ...
end

Я предлагаю вам позвонить rake routes, чтобы посмотреть, какие маршруты вы определили, и немного поиграться.

И вернемся к получаемой вами ошибке.Эта ошибка означает, что ограничение на область не соответствует.Могу поспорить, что локаль пуста.в соответствии с документами из form_with, вы должны использовать опцию видимости, например:

<%= form_with(model: @model, local: true, scope: I18n.locale) do |form| %>
...