2012-07-25 34 views
0

我看到這個問題在這裏回答,但不幸的是答案不起作用。僅供參考,這是一個Rails 2.3.11應用程序。如何從link_to助手調用「創建」動作?

我想打電話與對一個RESTful資源的link_to這幫助創建:

link_to("Add", part_types_path(myid), :method => :post) 

現在非常,非常奇怪的是,那我傳遞到URL助手的ID被解釋爲「格式」由Rails應用程序!所以鏈接出來是:

/part_types.12345 

其中「12345」是id。瘋!

我錯過了非常基本的東西,但我從來沒有見過Rails嘗試調用對象ID格式。

這裏是路由條目:

map.resources :part_types, :collection => { :part_list => :get } 

,這裏是結果從 「回扣路線」

POST /part_types(.:format) {:controller=>"part_types", :action=>"create"} 

公告不存在任何種類的ID的!

+0

請顯示您的config/routes.rb文件或輸入rake路由並向我們顯示輸出。謝謝。 – 2012-07-25 20:39:28

回答

1

與名稱part_types路線是指index行動,如果該方法是GET並向create動作,如果該方法是POST。這些操作都沒有參數化路徑(與show看起來應該如/part_types/:id相反)。 create應該創建一個新記錄並返回它的id - 通常不會在請求中傳遞它們,因爲服務器上的唯一id生成更容易。

您的第一個參數將被解釋爲格式,因爲該路線不帶任何參數。與此相比,以下內容:

  • part_type_path(1)應該返回/part_types/1
  • part_type_path(1, :json)應該返回/part/types/1.json

檢查actionpack/lib/action_dispatch/routing/mapper.rb看看resources是如何定義的。

相關問題