【问题标题】:Trouble configuring search field to pass searched value into function无法配置搜索字段以将搜索值传递给函数
【发布时间】:2012-06-03 21:34:51
【问题描述】:

我是 Ruby on Rails 的新手,最近表单给我带来了各种各样的麻烦,所以您在这里的帮助和支持将非常有价值。

在我的home.html.erb 文件中,我有这个代码:

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

我正在尝试获取用户在该搜索字段中输入的值并将其传递给一个名为 grabTweets 的函数,该函数包含以下代码:

  def grabTweets(mySearch)
    @tweet = Twitter.search(mySearch + "[pic] "+" instagr.am/i/", :rpp => 2, :result_type => "recent").map do |status|
    @tweet = "#{status.text}" #class = string
    urls = URI::extract(@tweet, "http") #returns an array of strings
    end
  end

home.html.erb 中的我的表单代码正确呈现,但不与 grabTweets 函数通信。像我一样在谷歌上搜索和修补,我似乎无法找出答案。 home.html.erb 中的代码将此添加到我的本地主机 URL 的末尾:/assets?utf8=✓&amp;tweets=google,因此搜索路由不正确。

提前致谢!

【问题讨论】:

  • 您是否为您的搜索操作添加了一个条目到 routes.rb ?您的搜索操作是什么样的?
  • @FrederickCheung 除了 root "/" 到 pages#home 之外,我没有做任何事情来编辑我的 routes.rb 文件。你会建议我在这里做什么?
  • @FrederickCheung 如何让路由在我的页面控制器中调用特定函数?
  • @ZackShapiro 阅读了guides.rubyonrails.org/routing.html
  • 在这种情况下路由是错误的。搜索参数应该作为参数传入,而不是在 url 中。

标签: ruby-on-rails ruby forms input


【解决方案1】:

有两件事:首先你需要确保你的 url 被路由到写入控制器

match '/search', :to "pages#search"

应该这样做。

然后在您的 PagesController 的搜索操作中,调用

grabTweets(params[:tweets])

并对结果做一些有趣的事情。显然,如果 grabTweets 不是控制器上的实例方法,那么您需要调整调用它的方式。

【讨论】:

    【解决方案2】:

    你的网址很好。对于搜索,您应该将参数作为 GET 参数传入(就像您目前所做的那样)

    问题在于您如何访问搜索参数。而不是像这样尝试读取函数中的参数:

    def grabTweets(mySearch)
      @tweet = Twitter.search(mySearch + "[pic] "+" instagr.am/i/", :rpp => 2, :result_type => "recent").map do |status|
      @tweet = "#{status.text}" #class = string
      urls = URI::extract(@tweet, "http") #returns an array of strings
      end
    end
    

    读取参数哈希:

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

    这是鲁比。请不要使用 CamelCase 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 2020-06-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      相关资源
      最近更新 更多