0

Ruby on Rails は初めてです。Twitterに接続する簡単なアプリケーションがあります。アプリケーションには、ホームページに検索テキスト ボックスと送信ボタンがあります。また、同じモデルとコントローラもあります。Twitter でいくつかのキーワードを動的に検索し、アプリケーションのホームページに表示したいと考えています。「index.html.erb」ページにテキストボックスと送信ボタンを作成しました。キーワードを取得してコントローラーに渡す方法がわかりません。次に、検索結果を表示したいと思います。誰でも同じ例を見つけることができますか? コードのエラー/変更を親切に提案してください。こんなルビーオンレール

index.html.erb の内容

<h1>Tweets about New Year Resolution</h1>

<tr><td>Enter keyword  <input type = "text" name = "keyword"></td></tr>
<tr><td><input type = "submit" value = "SEARCH"></td></tr>


<%= form_tag(tweets/index, :method => "get") do %>
    <%= label_tag(:q, "Enter keyword :") %>
    <%= text_field_tag(:q) %>
    <%= submit_tag("SEARCH") %>
<% end %>

<div id="container">
<ul>
<% @tweets.each do |tweet| %>
    <li class="<%=cycle('odd', '')%>">
        <%= link_to tweet.from_user, "http://twitter.com/#{tweet.from_user}", :class => "username", :target => "_blank" %>  
        <div class="tweet_text_area">
            <div class="tweet_text">
                <%=raw display_content_with_links(tweet.text) %>
            </div>
            <div class="tweet_created_at">
                <%= time_ago_in_words tweet.twitter_created_at %> ago
            </div>
        </div>
    </li>
<% end %>
</ul>
</div>

コントローラーの内容 tweets.rb

class TweetsController < ApplicationController
  def index
    #Get the tweets (records) from the model Ordered by 'twitter_created_at' descending

   searchValue = params[:keyword] 

 if Tweet.count > 0                         
               Tweet.delete_all        
    end    
     Tweet.get_latest_new_year_resolution_tweets("iphone")

    @tweets = Tweet.order("twitter_created_at desc")   


  end

end
4

3 に答える 3

0

あなたが学ぶことができる検索フォームについての素晴らしいRailscast があります。

DB アクセスを避けたい場合は、 thisthisおよびthisからも学ぶことができます。

于 2012-07-31T06:41:19.017 に答える
0

私が気づいたことの 1 つは、入力フィールドがqHTML で指定されていることです。それ以外の場合は、コントローラー アクションが待機しますparams[:keyword]。入力フィールドを変更してみてください:

<%= text_field_tag(:keyword) %>

フォーム タグ ヘルパーの URL も引用する必要があります。

form_tag("tweets/index", :method => "get")
于 2012-07-31T06:45:31.093 に答える