2014-01-11 42 views
0

我從一個搜索表單開始很小,並試圖讓基礎工作。預先感謝您提供的任何幫助。爲什麼我的簡單Rails form_tag搜索表單使用正確的方法提供結果?

我正在編輯Rails 2.3遺留應用程序並修改其舊搜索表單。現在,它只有一個字段用於在我的數據庫中進行文本搜索(通過匹配城市)。當我提交表單時,它從「URL /搜索位置」變爲「URL /搜索位置?城市= Los + Angeles」,但不顯示結果。根據我的日誌,我認爲問題在於它沒有呈現正確的視圖。

表Page(index.html.erb

<% form_tag search_path, :method => 'get' do %> 
    <%= text_field_tag :city, params[:city] %> 
    <%= submit_tag "Search", :name => nil %> 
    <% end %> 

結果頁(results.html.erb)

<% for location in @site_matches %> 
<h3><%= location.name %></h3> 
<% end %> 

控制器(search_controller.rb)

class SearchController < ApplicationController 
    def index 
    render :layout => 'mylayout' 
    end 

    def results 
    @site_matches = Location.find(:all, :conditions => ["city = ?", params[:city]]) 
    render :layout => 'mylayout' 
    end 
    end 

登錄

Processing SearchController#index (for X at X) [GET] 
    Parameters: {"city"=>"Los Angeles"} 
    Rendering template within layouts/mylayout 
    Rendering search/index 
    Completed in 9ms (View: 9, DB: 0) | 200 OK [URL/search-for-locations?city=Los+Angeles] 

路線

map.resources :search 
    map.search '/search-for-locations', :controller => 'search', :action => 'index' 

同樣,我很欣賞這個您的幫助!

回答

0

大量的試驗和錯誤之後,我發現這個問題是我的「結果」行動並非渲染「得」的觀點。我添加了下面到我的路線:

map.resources :search, :collection => { :index => :get, :results => :get } 

我也改變了我的form_tag到

<% form_tag url_for(:controller => 'search', :action => 'results'), :method => 'get' do %> 

而且它現在所有的工作!

相關問題