有一个“我显然做错了什么”的时刻。感觉就像我正在尝试做一些基本的事情,并与框架作斗争,所以我正在寻求帮助!
我正在使用 Rails 3,对如何制作一个搜索表单以产生具有干净 URL 的页面有点困惑。
我的应用程序允许您搜索从任何位置到另一个位置的路线。
例如,有效的 URL 是 /routes/A/to/B/,或 /routes/B
我的路线.rb:
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 的新手,非常感谢您的耐心等待。