2012-03-14 66 views
0

這裏是我的路線我的這條淺路線的形式有什麼問題?

resources :games do 
    resources :message_templates, :shallow => true 

我耙路線是這樣的

    game_message_templates GET /games/:game_id/message_templates(.:format)    message_templates#index 
             POST /games/:game_id/message_templates(.:format)    message_templates#create 
       new_game_message_template GET /games/:game_id/message_templates/new(.:format)   message_templates#new 
        edit_message_template GET /message_templates/:id/edit(.:format)     message_templates#edit 
         message_template GET /message_templates/:id(.:format)       message_templates#show 
             PUT /message_templates/:id(.:format)       message_templates#update 
             DELETE /message_templates/:id(.:format)       message_templates#destroy 

和我_form.erb,看起來像這樣

<% form_for(@message_template) do |f| %> 

,但我得到這個錯誤

undefined method `message_templates_path' 
+0

什麼是'@ message_template'?需要更多信息。 – 2012-03-14 20:43:37

+0

你什麼時候遇到錯誤?初始顯示錶格或出現錯誤或任何表單提交時? – 2012-03-14 20:56:12

+0

如果您同時顯示'message_template'模型和'controller'代碼,您還可以獲得更好,更快,更準確和適當的答案。 – 2012-03-14 20:57:32

回答

2

看起來您正在爲給定遊戲創建新消息模板,在這種情況下,您需要爲關聯遊戲提供路由。如果它是現有消息模板,則路徑將爲message_template_path,而不是message_templates_path。

說:

<% form_for([@game, @message_template]) do |f| %> 
+0

是的,我同意。我編輯答案,爲清晰起見添加'給定遊戲'。 – 2012-03-14 20:59:12

+0

即使是淺路線? – 2012-03-14 21:08:22

+0

是的,淺層路線需要父級,直到孩子被保存並生成了一個id(或其他參數)。在你的發佈路線上尋找例子; new_game_message_template包含遊戲,但edit_message_template不包含。 – mark 2012-03-14 21:55:15