Rails で簡単な検索フォームを作成しようとしていますが、何か足りないと思います。
検索用の名前付きルートがあります:
map.search ":first_name/:last_name", :controller => "home", :action => "search"
私は検索フォームでそれを使用しようとしています:
<% form_tag(search_path, :method => 'get') do %>
<%= text_field_tag(:first_name) %>
<%= text_field_tag(:last_name) %>
<%= submit_tag("Search") %>
<% end %>
しかし、検索フォームをロードすると、ActionController::RoutingError: が表示されます。
{:action=>"search", :controller="home"} から search_url を生成できませんでした - あいまいなルートがあるか、このルートに追加のパラメーターを指定する必要がある可能性があります。content_url には次の必須パラメータがあります: [:first_name, :last_name] - すべて満足していますか?
私は何が欠けていますか?フォームで定義されたフィールドは、ルート パラメーターと自動的にリンクされると思いました。:-/
アップデート:
現在、フォームが表示される前に search_path が生成されているため、更新できないことがわかりました。後から考えると一目瞭然!
ルートを変更しました:
map.search 'search', :controller => "home", :action => "search"
map.name ':first_name/:last_name', :controller => "home", :action => "name"
そして今、search
アクションは次のことを行います:
def search
redirect_to name_path(params)
end
それはすべて御馳走になります!ここでの主な目標は、検索を行った結果として、routeという名前の名前からその URL を取得することでした。みんなありがとう!