Usando rotas nomeadas com parâmetros e form_tag
Estou tentando criar um formulário de pesquisa simples no Rails, mas acho que estou perdendo alguma coisa.
Eu tenho uma rota nomeada para pesquisa:
map.search ":first_name/:last_name", :controller => "home", :action => "search"
Estou tentando usar isso no meu formulário de pesquisa:
<% form_tag(search_path, :method => 'get') do %>
<%= text_field_tag(:first_name) %>
<%= text_field_tag(:last_name) %>
<%= submit_tag("Search") %>
<% end %>
Mas quando carrego o formulário de pesquisa, recebo um ActionController :: RoutingError:
search_url falhou ao gerar a partir de {: action => "search",: controller => "home"} - você pode ter rotas ambíguas ou pode precisar fornecer parâmetros adicionais para esta rota. content_url possui os seguintes parâmetros necessários: [: first_name,: last_name] - todos estão satisfeitos?
o que estou perdendo? Eu pensei que os campos definidos no meu formulário seriam automaticamente vinculados aos meus parâmetros de rota. : - /
Atualizar:
Entendo que o search_path é gerado antes que o formulário seja exibido agora, portanto não pode ser atualizado. Óbvio em retrospectiva!
Eu mudei minhas rotas:
map.search 'search', :controller => "home", :action => "search"
map.name ':first_name/:last_name', :controller => "home", :action => "name"
E agora osearch
ação apenas faz:
def search
redirect_to name_path(params)
end
Tudo funciona um prazer! O principal objetivo aqui era obter esse URL donome rota nomeada como resultado de fazer uma pesquisa. Obrigado rapazes!