0

Twitterで画像を検索するアプリを構築しようとしています。そこにたどり着く前に、関数に値を入力する実用的な検索フィールドを構築するという恐ろしいハードルを飛び越える必要があります。

index.html.erbによって制御されるファイルには、次のコードPages controllerがあります。

<%= 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

2 つの問題:

私の検索クエリは、検索が実行された後の URL によって証明されるように、grabTweets 関数に渡されていません。

http://localhost:3000/?action=search&class=grabTweets&method=get(検索クエリは「橋」という単語でした

検索クエリが正しく実行されていないコードの何が問題になっていますか。

検索結果を に表示し、ページを変更するつもりがない場合、コントローラにあるコードをdef homeまたはに配置する必要がありますか?def searchroot_path

助けてくれてありがとう!私は完全に困惑しています。

4

1 に答える 1

0

Rails を紹介する本を読む必要があると思います。欠落している基礎がたくさんあるようです。

現在のページ (「ホーム」と呼んでいるようです) に対するアクションと、検索結果に対するアクションがあります。フォームは、検索アクションの URL を呼び出す必要があります。それは次のようになります。

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

( form_tag メソッドの詳細については、 APIを参照してください)

grabTweetsその状態で、それはsearch.html.erb (おそらく検索結果のページ) をレンダリングするsearch アクション (内部にネストされた別のメソッドを呼び出すべきではありません。これは意味がありません) を呼び出します。

ルート ファイルには、ホームと検索の両方のルートが必要です。

ページを更新せずにページを更新する場合:remote => trueは、フォームで を使用し、AJAX を使用して応答を処理する必要があります。

2 つのページを同じにして、一方に結果を含めたい場合は、検索機能をホーム アクションに移動して、params[:tweets] が設定されている場合にのみそれを呼び出すか、両方のアクションで同じテンプレートをレンダリングするようにします。

詳細については、レンダリング ガイドコントローラー ガイドを読むことをお勧めします。

于 2012-06-10T01:33:50.917 に答える