具有双重id的嵌套路由

时间:2012-08-12 21:06:33

标签: ruby-on-rails url-routing

我从rails开始,我在带有2个ID的嵌套路由上遇到问题。

我提交了一份表格:

http://localhost:3000/admin/worlds/1/banks/new

然后我重定向到:

http://localhost:3000/admin/worlds/23/banks/23 

(23是新银行的身份证)

问题是我无法强制此网址在创建操作后将第一个id = 1保留为第一个路径。

我在这里创建的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

事实是我看到了:

:id/thing/:id/stuff当我知道我应该:world_it/thing/:id/stuff

我尝试过不同的方式来使用重定向,尤其是redirect_to admin_banks(world_id, id),但它保持不变。

我很确定这可以通过routes.rb中的匹配修复,但我现在无法使其正常工作...

1 个答案:

答案 0 :(得分:3)

摆脱嵌套资源周围的:成员块&它应该工作。尝试:

namespace :admin do
  resources :mondes do
    resources :banques
  end
end