[英]Search query not showing up in URL in simple search app
我正在嘗試構建一個在Twitter上搜索圖像的應用程序。 在到達那里之前,我需要跳過構建工作搜索字段並將這個值饋送到函數中的令人生畏的障礙。
在由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
兩個問題:
執行搜索后,URL證明我的搜索查詢沒有傳遞到grabTweets函數中:
http://localhost:3000/?action=search&class=grabTweets&method=get
(搜索查詢是單詞“ bridge”
我的代碼有什么問題,即搜索查詢無法正確執行。
考慮到我希望搜索結果顯示在root_path
並且不打算更改頁面,我應該將控制器中的代碼放在def home
或def search
嗎?
先謝謝您的幫助! 我徹底陷入了困境。
我認為您需要閱讀介紹Rails的書,因為您似乎缺少許多基本知識。
您對當前頁面有一個操作(您似乎將其稱為“主頁”),而對搜索結果有一個操作。 您的表單需要調用該搜索操作的網址。 看起來像這樣:
<%= form_tag({:controller => "pages", :action => "search"}, {:method => "get", :class => "grabTweets"}) do %>
...
(有關form_tag方法的更多詳細信息,請參見API )
在這種狀態下,它將調用搜索操作(該操作不應在其中嵌套另一個名為grabTweets
方法-毫無意義),然后將呈現search.html.erb(可能是搜索結果的頁面)。
在您的路線文件中,您需要一條用於首頁和搜索的路線。
如果要更新頁面而不刷新頁面,則需要在表單上使用:remote => true
並使用AJAX處理響應。
如果要使兩個頁面相同,但其中一個頁面包含結果,則可以將搜索功能移到home動作中,並且僅當params [:tweets]填充時才調用它,或者只是兩個動作都呈現相同的模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.