2016-07-12 2 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は、それが「新しい」ページ

ポスト要求

<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"> 

ほとんどすべてのものが足場が作り出したものなので、なぜ私が何を得ているのか分かりません彼は誤りです。なぜ生成されたHTMLがPOSTを使用しているのですか?

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、私はそれを参照してください。 UTF-8 "method =" post "> ' – mack

+0

マックはそれを理解しましたか? – bkunzi01

答えて

0

あなたのルートリストには、「更新」のためのPATCHまたはPUTリクエストがあることが示されているので、正しく動作するには「POST」ではなく「PUT」に変更する必要があります。ビューにフォームを表示すると、変更する内容が詳細に表示されます。

関連する問題