17

私はこのコードを持っています:

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

これは正常に動作しますが、変更すると、

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

このエラーが発生します

[POST] "/users/new" に一致するルートはありません

どんな助けでも大歓迎です。

4

4 に答える 4

30

イエス・ロドリゲスは POST と GET については正しいですが、本当にボタンが必要な場合は、デフォルトのメソッドを単純にオーバーライドできます。

<%= button_to "New User", new_user_path, :class => "button", :method => :get  %>
于 2012-09-18T10:48:23.120 に答える
19

「link_to」はGETを使用して/users/newを探しています。

「button_to」は、 POSTを使用して/users/newを探しています

以下を使用してコントローラーのルートを作成する場合:

resources :user

デフォルトでは、/users/newPOSTではなくGETであるため、2 行目ではルートが見つかりません。

そのアクションをPOSTに変更しようと考えている場合は、忘れるべきだと思います。

于 2012-09-18T10:43:14.230 に答える
2

button_to のデフォルトは POST で、link_to のデフォルトは GET です。これが、links_to が機能した理由です。button_to に GET を強制的に使用させることができます。

<%= 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 を参照してください。

于 2012-09-18T10:47:13.963 に答える
2

button_to にデフォルト以外のメソッドを強制的に使用させる代わりに、クラスを link_to に送信することもできます。

<%= link_to "New User", new_user_path, :class => "button" %>
于 2015-01-25T05:25:42.037 に答える