Наличие одного из тех моментов «я явно делаю что-то не так».Такое ощущение, что я пытаюсь сделать что-то простое и борюсь с фреймворком, поэтому я обращаюсь за помощью!
Я использую Rails 3, и я немного запутался, как создать форму поиска, котораярезультаты на страницах с чистыми URL-адресами.
Мое приложение позволяет выполнять поиск по маршрутам из любого местоположения в другое местоположение.
Например, допустимым URL-адресом будет / route / A / to / B/, или / маршруты / B
Мои маршруты.рб:
match 'routes/:from/to/:to' => 'finder#find', :as => :find
match 'routes/find' => 'finder#find'
Моя форма поиска:
<% form_tag('/routes, :method => 'post') do %>
<%= label_tag(:from, "From:") %>
<%= text_field_tag(:from) %>
<%= label_tag(:to, "To:") %>
<%= text_field_tag(:to) %>
<%= submit_tag("Go") %>
<% end %>
Контроллер:
class FinderController < ApplicationController
def index
end
def find
if params[:from].blank? or params[:to].blank?
render :action => "invalid_results" and return
end
@from = Location.find_by_code(params[:from].upcase)
@to = Location.find_by_code(params[:to].upcase)
if @from.nil? or @to.nil?
render :action => "invalid_results" and return
end
@routes = Route.find_all_by_from_location_id_and_to_location_id(@from, @to)
end
end
Когда я использую :method => 'get'
в моем form_tag
, приложение работает, но URL отвратителен.И, конечно же, с :method => 'post'
переменные больше не видны, что плохо для закладок.Как мне сказать Rails использовать мои красивые URL после размещения формы?
Я ОЧЕНЬ новичок в Rails, поэтому ваше терпение ценится.