2012-06-09 61 views
0

我試圖建立一個搜索Twitter如需查看圖像的應用程序。在我到達那裏之前,我需要跳過構建一個工作搜索字段的恐嚇障礙,該字段將一個值提供給函數。搜索查詢沒有出現在URL中的簡單搜索應用程序

在那種年代由Pages controller控制我index.html.erb文件,我有這樣的代碼:

<%= form_tag root_path ({:controller => "pages", :action => "search", :method => "get", :class => "grabTweets" }) do %> 
<%= text_field_tag :tweets, params[:tweets] %> 
<% end %> 

在我Pages controller我:

def search 

    def grabTweets 
     @tweet = Twitter.search(params[:tweets] + "[pic] "+" path.com/p/", :rpp => 3, :result_type => "recent").map do |status| 
     @tweet = "#{status.text}" #class = string 
     @urls = URI::extract(@tweet, "http") #returns an array of strings 
    end 
    end  


end 

兩個問題:

我的搜索查詢ISN沒有被傳遞到grabTweets函數中,如搜索後執行的URL所證明的那樣:

http://localhost:3000/?action=search&class=grabTweets&method=get(搜索查詢是單詞「橋」

這有什麼錯我的代碼,搜索查詢沒有被正確執行。

我的代碼在控制器中應該放在def homedef search,因爲我希望搜索結果顯示在root_path中,並且不打算更改頁面嗎?

在此先感謝您的幫助!我徹底難倒了。

回答

0

我認爲你需要閱讀一本書introducting Rails的,因爲似乎你缺少許多基本面。

你有你的頁面上(你好像叫「家」)和搜索結果的動作的動作。您的表單需要調用搜索操作的url。這將是這樣的:

<%= form_tag({:controller => "pages", :action => "search"}, {:method => "get", :class => "grabTweets"}) do %> 
... 

在這種狀態下(有關的form_tag方法的更多詳細信息,請參閱API),它會調用搜索行動(這不應該有另一種方法叫grabTweets嵌套它 - 這沒有任何意義),然後將呈現search.html.erb(大概是一頁搜索結果)。

在你的路由文件,你需要爲家庭和搜索的路線。

如果您希望頁面而無需刷新頁面更新,那麼你需要在表格上使用:remote => true和使用AJAX處理響應。

如果您希望這兩個頁面是相同的,但其中一個包含結果,則可以將搜索功能移到主動作中,並且只在填充了params [:tweets]時調用它,或者只是將這兩個動作呈現相同的模板。

我會建議通過Rendering Guide和​​閱讀以瞭解更多。