我正在尝试在 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:
search_url 无法从 {:action=>"search", :controller=>"home"} 生成 - 您可能有不明确的路线,或者您可能需要为此路线提供额外的参数。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作为搜索的结果。多谢你们!