2016-07-12 121 views
0

我有什麼似乎我作爲一個奇怪的路由錯誤,我似乎無法解決。我正在使用Rails 4.2.6併爲客戶生成一個腳手架。我能夠查看客戶的列表,但是當我編輯的客戶我得到一個錯誤路由錯誤更新/創建記錄

No route matches [POST] "/customers/49"

一切幾乎是創造了什麼腳手架,雖然我沒有改變我的路線是:

resources :customers do 
    resources :comments, only: [:new, :create, :edit, :update] 
    end 

但我用腳手架默認也嘗試過,並收到相同的錯誤。

這些航線爲客戶提供:

   customers GET /customers(.:format)        customers#index 
         POST /customers(.:format)        customers#create 
      new_customer GET /customers/new(.:format)       customers#new 
      edit_customer GET /customers/:id/edit(.:format)      customers#edit 
       customer GET /customers/:id(.:format)       customers#show 
         PATCH /customers/:id(.:format)       customers#update 
         PUT /customers/:id(.:format)       customers#update 
         DELETE /customers/:id(.:format)       customers#destroy 

的「編輯」頁面生成的HTML表明它是一個POST請求

<form class="edit_customer" id="edit_customer_49" action="/customers/49" accept-charset="UTF-8" method="post"> 

與同爲

「新」頁面
<form class="new_customer" id="new_customer" action="/customers" accept-charset="UTF-8" method="post"> 

大多數情況下,一切都是腳手架產生的,所以我不知道爲什麼我會得到t他錯了。爲什麼使用POST生成的HTML以及如何才能使其工作?

感謝您幫助Rails新手。

UPDATE 好了,在我的模型我有

CUSTOMER_TYPE = ["A", "B"] 

在我的編輯/新形式,我有這樣的:

<%= f.label :customer_type %> 
    <%= f.select :customer_type, Customer::CUSTOMER_TYPE, {include_blank: true}, {index: nil} %> 

如果我把上面這行我的形式,編輯和新形式都可以正常工作!?

+0

這是一個POST表單,但該方法應該作爲PATCH來通過。你生成的HTML是否有一行像''? – GoGoCarl

+0

是@GoGoCarl,我明白了。 '

' – mack

+0

麥克你知道嗎? – bkunzi01

回答

0

嘿你的路由列表顯示他們希望PATCH或PUT請求'更新',所以你必須改變'PUT'而不是'POST'的方法才能正常工作。在您的視圖中顯示錶單,然後我會更詳細地顯示您要更改的內容。