【问题标题】:Search query not showing up in URL in simple search app搜索查询未显示在简单搜索应用程序的 URL 中
【发布时间】:2012-06-09 23:39:28
【问题描述】:

我正在尝试构建一个在 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

两个问题:

执行搜索后,我的搜索查询没有被传递到 GrabTweets 函数中,正如 URL 所证明的那样:

http://localhost:3000/?action=search&amp;class=grabTweets&amp;method=get(搜索查询是单词“bridge”

我的代码有什么问题,搜索查询没有正确执行。

鉴于我希望搜索结果显示在 root_path 中并且不打算更改页面,我应该将控制器中的代码放在 def home 或 def search 中吗?

提前感谢您的帮助!我彻底被难住了。

【问题讨论】:

    标签: ruby-on-rails ruby forms search


    【解决方案1】:

    我认为您需要阅读一本介绍 Rails 的书,因为您似乎缺少许多基础知识。

    您有一个针对您所在页面的操作(您似乎称之为“主页”)和一个针对搜索结果的操作。您的表单需要调用搜索操作的 url。看起来像这样:

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

    (有关 form_tag 方法的更多详细信息,请参阅API)

    在这种状态下,它将调用搜索操作(其中不应嵌套另一个名为 grabTweets 的方法 - 这没有意义),然后将呈现 search.html.erb(可能是搜索结果页面) .

    在您的路线文件中,您需要一条既可用于家又可用于搜索的路线。

    如果您希望在不刷新页面的情况下更新页面,那么您需要在表单上使用:remote =&gt; true 并使用 AJAX 处理响应。

    如果您希望两个页面相同,但其中一个包含结果,则要么将搜索功能移至 home 操作,并且仅在填充了 params[:tweets] 时才调用它,或者只让两个操作都呈现相同的模板。

    我建议您阅读Rendering Guide 和Controllers Guide 以了解更多信息。

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2017-08-15
      相关资源
      最近更新 更多