2012-11-30 76 views
1

我正在使用我的第一個Web和Rails應用程序,但無法弄清楚如何從我的主頁到其中一個控制器獲取搜索功能。從Rails的主頁面搜索

如何發送請求並重定向到結果頁面以顯示搜索結果。 我無法得到這個工作,因爲我不知道如何路線我的變量@histories將保持結果並顯示在顯示頁面上。

我希望能夠從任何頁面進行搜索並在專用頁面上顯示結果。

這是我迄今爲止在控制器,模型和partials方面。

出貨型號:

def self.search(search) 
    search_condition = search 
    find_by_sql("SELECT cargo_transit_histories.current_location,cargo_transit_histories.updated_at  FROM cargo_transit_histories 
INNER JOIN shipments ON shipments.id = cargo_transit_histories.shipment_id WHERE shipments.tracking_number='search_condition'") 
end 

跟蹤控制器:

def search 
    @histories = Shipment.search(params[:search]) 
    render('show') 
end 

展(發現在跟蹤視圖):

<div class="search_result"> 
<%= render 'track/search_results' %> 
</div> 

_search(部分):

<%= form_tag :controller => 'tracking', :action => 'search', :method => 'get' do %> 
    <%= text_field_tag :search, params[:search], :id => 'search_field' %> 
    <%= submit_tag "Search", :name => nil %> 
    <%= link_to_function "Clear", "$('search_field').clear()" %> 
<% end %> 

_search_results(部分):

<div class="Results list"> 

    <table class="Resultslisting" summary="Result list"> 
    <tr class="header"> 
    <th>Current Location</th> 
    <th>Date/Time</th> 
    </tr> 
<% if [email protected]? %> 
    <% @histories.each do |result| %> 
    <tr> 
    <td><%= result.current_location %></td> 
    <td><%= result.updated_at %></td> 
    </tr> 
    <% end %> 
    </table> 
<% else %> 
    <p> The tracking number does not exist!</p> 
<% end %> 

</div> 
+0

您應該先閱讀更多關於Rails 3的內容。通過控制器/操作進行的路由已棄用。您不應該在SQL中編寫您的查找器,添加關聯並使用範圍來優化查詢。目前的搜索條件不會被內插,並且容易受到SQL注入的影響。嘗試[使用Rails進行敏捷Web開發](http://pragprog.com/book/rails4/agile-web-development-with-rails),它非常好。 – sj26

+0

Hello @ sj26,我已經有貨物和cargo_transit_histories之間的聯繫,並且會改變這個發現。我最大的問題是如何讓結果顯示在另一個專用頁面上? – Andy7

回答

0

嘗試類似下面的改編例如:

https://gist.github.com/4173716

但你需要挖成深一點的Rails 3明白爲什麼。

+0

感謝您的鏈接,這是有幫助的。正如我在之前的評論中提到的那樣,我很努力地將重定向到將在搜索完成後顯示@shipment內容的頁面。 – Andy7