У меня есть панель управления учетной записью, в которой перечислены офисы и для каждого офиса доступны рабочие места.Rails form_for действие имеет поврежденную локаль
Иерархия:
- компании (1 пользователь имеет 1 компанию, получить доступ, если из профиля пользователя)
- Офисов (каждая компания может иметь несколько офисов)
- Работы (каждый офис может иметь несколько работы)
Модели:
class Company < ActiveRecord::Base
has_many :offices, :dependent => :destroy
has_many :jobs, :through => :offices
class Office < ActiveRecord::Base
belongs_to :company
has_many :jobs, :dependent => :destroy
class Job < ActiveRecord::Base
belongs_to :office
Для каждой работы у меня есть ссылка для редактирования
E.g. для работы ид 10 (работа является локальной переменной от итерации на офисных рабочих мест)
= link_to edit_job_path (I18n.locale, работа)
-> локальный: 3000/де/работы/10/редактировать
Когда я нажимаю на ссылку редактирования, я перехожу на страницу редактирования. До сих пор так хорошо, но форма выглядит следующим образом:
<form accept-charset="UTF-8" action="/10/jobs/10" class="edit_job" enctype="multipart/form-data" id="edit_job_10" method="post">
Обратите внимание, что мой локали (де в этом примере) исчезает и имеет идентификатор задания, а!
Мой routes.rb
scope "/:locale" do
resources :companies
resources :offices do
resources :jobs
end
resources :jobs
end
Есть два рабочих места, упомянутые, я, вероятно, может обойтись без, но это простой способ для меня, чтобы либо упомянуть непосредственно в URL задания для просмотра или добавить переменную офиса в создании новых ссылка на работу и использование: office_id (в моем контроллере панели управления: link_to new_office_job_path (I18n.locale, office), то в моей форме для новых рабочих мест: = f.hidden_field: office_id)
Но даже если я удалю ресурсы: задания в : офисы. Локаль по-прежнему заменяется идентификатором задания в форме редактирования.
Обратите внимание, что я могу правильно отредактировать задание, но поскольку локаль изменена, текст локализации ошибочен после моего перенаправления.
Любая идея, как исправить это?
------ Дополнительные данные запрошенный -----------
= form_for(@job) do |f|
.field
= f.label :name, t(:job_title)
= f.text_field :name
.field
= f.label :url, t(:job_url)
= f.text_field :url
.field
= f.hidden_field :office_id
.field
= f.label :pdf, t(:job_upload_pdf)
= f.file_field :pdf
.field
= f.label :tag_list, t(:job_tags)
= f.text_field :tag_list
.actions
= f.submit "Submit", :class => "btn btn-primary"
------ Дополнительная информация -----------
BTW: эта работа работает, я получаю/de/jobs/10, но я хотел бы понять, почему локаль повреждена, если я использую форму по умолчанию form_for.
= form_for @job, :url => job_path(I18n.locale, @job) do |f|
Ваша проблема, скорее всего, в самой форме. можете ли вы включить код для формы редактирования в свой вопрос? – jvnill
Форма очень похожа на форму «новая работа», которая не затрагивает языковой стандарт. ссылка на новое: localhost: 3000/de/office/5/jobs/new (используя другой ресурс в пути) -> form accept-charset = "UTF-8" action = "/ de/jobs" class = "new_job" enctype = "multipart/form-data" id = "new_job" method = "post" – Jeremy
Запуск 'url_for (@job)' дает мне ошибку, которая меня озадачивает, почему вы ее не получаете. я смог исправить это, передав параметр «как» в область на маршрутах и используя сгенерированный named_route. что-то вроде 'locale_job_path (params [: locale], @job)'. – jvnill