0

Railsアプリにいくつかの滑らかなボタンを配置して、リンクとして機能させようとしています。ただし、そうしようとすると、奇妙な問題が発生します。次のようにリンクボタンを追加しようとしました:

<%= button_to( "New", :action => "new", :controller => "registrations") %>

これにより、ユーザーをサインアップ ページに誘導する新しいボタンが作成されます。

ここが変なところです:ルーティング先のボタンをクリックするhttp://localhost:3000/users/sign_upと、次のエラーが表示されます:

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

しかし、これは単に真実ではありません。実際、そのエラーが発生した URL を強調表示し、それをコピーして新しいタブに貼り付けると、正常に読み込まれます。

完全に明確にするために、ここからのパスは次のrake routesとおりです。

new_user_registration GET    /users/sign_up(.:format)       registrations#new

ここで何が起こっているのでしょうか?

どんな考えでも大歓迎です。

4

2 に答える 2

3

メソッド get を期待するルートは、button_to` が GET リクエストを送信することになっていないため、問題が発生しています。

次のいずれかを行う必要があります

1.button_toに変更link_to

<%= link_to( "New", :action => "new", :controller => "registrations") %>

2.追加:method => :get

<%= button_to( "New", {:action => "new", :controller => "registrations"}, :method => :get) %>
于 2014-12-19T08:27:24.223 に答える
1

デフォルトでは、ボタンをクリックするとPOSTリクエストがサーバーに送信されます。この動作を send に変更する必要がありますGET:

<%= button_to('New', {action: 'new', controller: 'registrations'}, method: :get) %>
于 2014-12-19T08:27:51.930 に答える