我从rails开始,我在使用2个ids的嵌套路由时遇到了问题。
我从以下地址提交表单:
http://localhost:3000/admin/worlds/1/banks/new
然后我被重定向到:
http://localhost:3000/admin/worlds/23/banks/23
( 23是新银行的id )
问题是,我不能强制这个url在创建操作后的第一个路由上保留第一个id = 1
。
我在create here上的Admin::Bank
控制器:
def create
@world_bank = Admin::Bank.new(params[:admin_banque])
@world_bank.world_id = params[:id]
@world_bank.save!
redirect_to admin_bank_path(@world_bank.world_id, @world_bank.id)
end
路由:
namespace :admin do
resources :mondes do
member do
resources :banques
end
end
end
和rake路由:
admin_banks GET /admin/worlds/:id/banks(.:format) admin/banks#index
POST /admin/worlds/:id/banks(.:format) admin/banks#create
new_admin_bank GET /admin/worlds/:id/banks/new(.:format) admin/banks#new
edit_admin_bank GET /admin/worlds/:id/banks/:id/edit(.:format) admin/banks#edit
admin_bank GET /admin/worlds/:id/banks/:id(.:format) admin/banks#show
PUT /admin/worlds/:id/banks/:id(.:format) admin/banks#update
DELETE /admin/worlds/:id/banks/:id(.:format) admin/banks#destroy
事实是,我看到:
当我知道我应该获取:world_it/thing/:id/stuff
时使用:id/thing/:id/stuff
我尝试了不同的方式来使用重定向,特别是redirect_to admin_banks(world_id, id)
,但它仍然是一样的。
我很确定这可以通过routes.rb中的匹配来修复,但我现在不能让它工作……
发布于 2012-08-14 02:13:31
去掉嵌套资源周围的:member块&它应该可以工作。尝试:
namespace :admin do
resources :mondes do
resources :banques
end
end
https://stackoverflow.com/questions/11925885
复制相似问题