簡體   English   中英

在簡單搜索應用程序的URL中未顯示搜索查詢

[英]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 homedef 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM