0

我正在尝试编写一个非常简单的函数,它将某人输入到输入字段中的任何文本输入到搜索 Twitter 并返回一些值的函数中。

在我的home.html.erb文件中,我有这段代码,但我不确定调用应该调用我的grabTweets 函数的@tweetArray 实例变量是否是正确的处理方式。

    <%= form_for(@tweetArray) do |f| %>
    <%= f.text_field :grabTweets %>
    <% end %>

在我的pages helper文件中,我有:

  @tweetArray = grabTweets(:grabTweets)

  def grabTweets(mySearch)
    @tweet = Twitter.search( "mySearch +" "[pic] "+" path.com/p/", :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

我的页面只显示此错误undefined method grabTweets for PagesHelper:Module。我在我的home.html.erb文件中放了什么才能正确调用此代码?

编辑:

更新了我的代码home.html.erb

    <%= form_for(grabTweets) do |f| %>
    <%= f.text_field :search %>
    <% end %>

这更有意义吗?

然后在我的pages controller

@tweetArray = grabTweets(":search")


def grabTweets(mySearch)
    @tweet = Twitter.search( mySearch + "[pic] "+" path.com/p/", :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

我仍然遇到undefined local variable or method grabTweets错误home.html.erb

4

1 回答 1

0

有一个模型

假设您有一个 @tweet 对象:

<%= form_for(@tweet) do |f| %>
  <%= f.text_field :search %>
<% end %>

然后,根据您设置路线的方式,当用户提交表单时,它将触发您的find_tweets操作。您可以设置一条路线来实现/tweetsfind_tweets操作(您可以随意称呼它)。

在您的控制器中,您将拥有:

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

    { 
      :tweet => tweet,
      :urls => urls
    }
  end

  @tweets
end

这应该会让你得到一个@tweets带有推文和网址的哈希数组。我还没有测试过这些,但我希望它能为你指明正确的方向。

没有模型

要在没有模型的情况下执行此操作,您可以使用form_tag.

<%= form_tag '/tweets/find_tweets' do %>
  <%= text_field_tag "search" %>
<% end %>

您的控制器不会有太大变化,但您可能会使用它params[:search]来访问您的搜索参数。

于 2012-06-03T23:18:17.723 回答