2012-06-09 64 views
0

我试图建立一个搜索Twitter如需查看图像的应用程序。在我到达那里之前,我需要跳过构建一个工作搜索字段的恐吓障碍,该字段将一个值提供给函数。搜索查询没有出现在URL中的简单搜索应用程序

在那种年代由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 

两个问题:

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

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

这有什么错我的代码,搜索查询没有被正确执行。

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

在此先感谢您的帮助!我彻底难倒了。

回答

0

我认为你需要阅读一本书introducting Rails的,因为似乎你缺少许多基本面。

你有你的页面上(你好像叫“家”)和搜索结果的动作的动作。您的表单需要调用搜索操作的url。这将是这样的:

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

在这种状态下(有关的form_tag方法的更多详细信息,请参阅API),它会调用搜索行动(这不应该有另一种方法叫grabTweets嵌套它 - 这没有任何意义),然后将呈现search.html.erb(大概是一页搜索结果)。

在你的路由文件,你需要为家庭和搜索的路线。

如果您希望页面而无需刷新页面更新,那么你需要在表格上使用:remote => true和使用AJAX处理响应。

如果您希望这两个页面是相同的,但其中一个包含结果,则可以将搜索功能移到主动作中,并且只在填充了params [:tweets]时调用它,或者只是将这两个动作呈现相同的模板。

我会建议通过Rendering Guide和​​阅读以了解更多。