【发布时间】:2014-07-17 14:20:00
【问题描述】:
我有一个资源,我希望 index/show 面向公众,但其他所有内容都以“/admin”为范围。我期待以下工作:
resources :jobs, only: [:index, :show]
scope 'admin' do
resources :jobs, except: [:index, :show]
end
在一定程度上确实如此。我遇到的唯一问题是使用 form_for 在为:create 执行post 时无法识别范围。它将操作设置为“/jobs”而不是“/admin/jobs”。
这没什么大不了的,因为我可以通过创建特定的创建路径并在 form_for 的 url 中指定它来解决它
resources :jobs, only: [:index, :show]
scope 'admin' do
post :jobs, to: 'jobs#create', as: 'create_job'
resources :jobs, only: [:edit, :new, :destroy, :update]
end
有没有更好的方法来克服这个问题?
编辑:如果我没有为 :create 指定特定路线,这是我的路线
jobs GET /jobs(.:format) jobs#index
job GET /jobs/:id(.:format) jobs#show
POST /admin/jobs(.:format) jobs#create
new_job GET /admin/jobs/new(.:format) jobs#new
edit_job GET /admin/jobs/:id/edit(.:format) jobs#edit
PATCH /admin/jobs/:id(.:format) jobs#update
PUT /admin/jobs/:id(.:format) jobs#update
DELETE /admin/jobs/:id(.:format) jobs#destroy
【问题讨论】:
-
form_for [:admin, :job]呢?
标签: ruby-on-rails ruby-on-rails-4 routing