0

ここでは Ruby を初めて使用します。私は取得し続けます: ルートが一致しません {:controller=>"home", :action=>"search"} インデックスビューに単純なフォームがあります:

<%= form_tag(search_path) do %>

    <%= text_field(:search, nil, :placeholder => "yada yada") %>

    <%= submit_tag("Search") %>

<% end %>

そして、私はこれらのルートを持っています:

   root to: "home#index"
   match 'search/:term', to: 'home#search', as: :search, via: [:post]

そしてコントローラー: home_controller.rb

class HomeController < ApplicationController

  def index
  end

  def search
    render 'index'
  end
end

'search/:term' に一致させようとするルーティングに何か問題があると思いますが、何が原因かわかりません。

4

1 に答える 1

0

ルート定義には、URL の一部として「用語」が必要であると記載されています。つまり、次のようになります。

http://example.com/search/some+term

あなたのフォームは /search パッチに投稿していますが、「用語」を提供していません

用語をオプションにする

match 'search(/:term)', to: 'home#search', as: :search, via: [:post]

またはそれをすべて一緒に削除します(フォームで参照していません)

match 'search', to: 'home#search', as: :search, via: [:post]

あなたの問題は解決するはずです。

于 2013-10-03T19:59:45.007 に答える