0

RubyonRailsアプリケーションを作成してTwitterを統合しました。しかし、私はそれを実行している間、いくつかの問題に直面しています。検索ボックス送信ボタンのあるインデックスページがあります。アプリケーションは、Twitterに入力されたキーワードを検索し、それをアプリケーションページ(ツイートを動的に表示するためのcreate.html.page)に動的に表示しようとします。したがって、「ツイートコントローラ」と2つのhtml.erbファイルがあります。"Index.html.erb"、"create.html.erb"。そしてモデル。コントローラのindexメソッドは、特定のキーワードを使用してフィードを表示するために使用されます(静的な方法のように言うことができます)。createメソッドは、ツイートを動的に表示するために使用されますindex.html.erbに入力されたキーワードに基づきます。form_forまたはform_tagの使用を避けたかったので、htmlフォームタグを使用してフォームを作成しました。

URL「http:localhost:3000 / tweets / create」を実行しようとすると、そのシンボルが配列インデックスとして表示されるというエラーが表示されます 。URL「http:localhost:3000 / tweets / index」を実行しようとすると、ページが表示されません。レンダリングされます。親切に助けてください。コントローラーを投稿しています。以下のビューをご覧ください。

ありがとう、bhargav

「Index.html.erb」

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


<form action="/create" method="post">
<label for="keyword">keyword</label>
  <input id="keyword" name="Enter keyword" size="30" type="text" />

<input type="submit" value="search" />

</form>

 <% if (@tweets != nil) then %>
   print "The tweets are " @tweets
  <% else %>
   print "No tweets for the keyword"
 <% 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>`enter code here`
<% end %>
</ul>
</div> 

「create.html.erb」

<h1>Keywords displayed</h1>
<p> A page to display tweets
</p>

「tweets_controller.rb」

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

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

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

  def create
    @tweets = (params [:tweet][:search])
    Tweet.get_latest_new_year_resolution_tweets(@tweets)
  end
end

モデル* tweet.rb *には、メソッドget_latest_new_year_resolution_tweetsが含まれています。以下のとおりです。

class Tweet < ActiveRecord::Base

  #A method to grab latest tweets from Twitter
  def self.get_latest_new_year_resolution_tweets(keyword)

    #create a Twitter Search object
    search = Twitter::Search.new

    #grab recent 100 tweets which contain 'new year resolution' words, and loop each of them
    search.containing(keyword).result_type("recent").per_page(100).fetch.each do |tweet_results|

      #parsing the string 'created_at' to DateTime object
      twitter_created_at = DateTime.parse(tweet_results.created_at)

      #making sure we are not saving exact same tweet from a person again 
      unless Tweet.exists?(['twitter_created_at = ? AND from_user_id_str = ?', DateTime.parse(tweet_results.created_at), tweet_results.from_user_id_str])

        #finally creating the tweet record
        Tweet.create!({
            :from_user => tweet_results.from_user,
            :from_user_id_str => tweet_results.from_user_id_str,
            :profile_image_url => tweet_results.profile_image_url,
            :text => tweet_results.text,
            :twitter_created_at => twitter_created_at
        })
      end
    end
  end
end
4

0 に答える 0