2012-09-18 16 views
17

をbutton_toするのlink_toを変更するときに、私は、コードのこの作品があります"Noルート一致しない[POST]"

<%= link_to "New User", new_user_path, :class => "button" %><br /> 

正常に動作しますが、私はそれを変更した場合、

<%= button_to "New User", new_user_path, :class => "button" %><br /> 

私が手このエラー

Noルートマッチ[POST] "/ユーザー/新"

何か助けていただければ幸いです。

答えて

29

イエス・ロドリゲスは、POSTについての権利であるとGET、しかし、あなたが本当にボタンが必要な場合は、単に上書きすることができます

<%= button_to "New User", new_user_path, :class => "button", :method => :get %> 
+0

うまく動作します!ありがとうございます:) –

19

"link_to"はGETを使用して/users/newを検索しています。あなたが使用してコントローラのルートを作成する場合

"button_toは" POST

を使用して新しい/ユーザー/探している:

resources :user 

デフォルトでは、/ユーザー/新しいです。であり、ではありません。です。したがって、2行目にはルートが見つかりません。

あなたは私はあなたがそれを忘れなければならないことだと思うPOSTにそのアクションを変更するために考えている場合。

2

button_toはデフォルトでPOSTに設定されていますが、link_toのデフォルトはGETであるため、links_toが動作するのはこのためです。あなたは、GETを使用するbutton_toを強制することができます。

<%= button_to "New User", new_user_path, :class => "button", :method => :get %> 

あなたがここにbutton_toオプションの詳細情報を得ることができます。http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to

3

デフォルト以外の方法を使用する代わりに、button_toにlink_toにクラスを送信することもできます。

<%= link_to "New User", new_user_path, :class => "button" %> 
+0

これに追加するには、クラスにボタンを追加してボタンのように見えるようにすることができます(上の回答のとおり)。私の場合、私はブートストラップを使用しており、次のことを行っています。 '<%= link_to"新規ユーザ "、new_user_path、:class =>" btn btn-default "%>' –

関連する問題