Jer*_*emy 5 ruby-on-rails-3 ruby-on-rails-3.2
我有一个帐户仪表板,其中列出了办公室以及每个办公室的可用职位。
等级制度:
楷模:
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
Run Code Online (Sandbox Code Playgroud)
对于每份工作,我都有一个编辑链接
例如,对于作业 ID 10(作业是办公室作业迭代中的局部变量)
= link_to edit_job_path(I18n.locale, 工作)
- >本地主机:3000 / de / jobs / 10 /编辑
当我单击编辑链接时,我会转到编辑页面。到目前为止一切顺利,但形式看起来像这样:
<form accept-charset="UTF-8" action="/10/jobs/10" class="edit_job" enctype="multipart/form-data" id="edit_job_10" method="post">
Run Code Online (Sandbox Code Playgroud)
请注意,我的区域设置(本例中为 de)消失了,取而代之的是作业 ID!
我的路线.rb
scope "/:locale" do
resources :companies
resources :offices do
resources :jobs
end
resources :jobs
end
Run Code Online (Sandbox Code Playgroud)
提到了两个工作,我可能可以不做,但对我来说,直接提及要查看的工作 url 或在创建新工作链接中添加 Office 变量并使用 :office_id (在我的仪表板控制器中: link_to new_office_job_path( I18n.locale, office) 然后在我的新工作表单中:= f.hidden_field :office_id)
但即使我删除了:办公室中的资源:工作。区域设置仍由编辑表单中的作业 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"
Run Code Online (Sandbox Code Playgroud)
- - - 附加信息 - - - - - -
顺便说一句:这个解决办法有效,我得到 /de/jobs/10 但我想了解为什么如果我使用默认的 form_for 语言环境会被损坏。
= form_for @job, :url => job_path(I18n.locale, @job) do |f|
Run Code Online (Sandbox Code Playgroud)
您可以使用路由过滤器来处理区域设置,我已经在我的项目中尝试过,您不必担心路由中的区域设置,过滤器将为您处理它。
# in config/routes.rb
Rails.application.routes.draw do
filter :locale
end
Run Code Online (Sandbox Code Playgroud)
我希望这能解决您的问题。
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |