Web Programming examples

Google Maps,AngularJS

Archives

Ruby on Rails Tutorial status feed with AngularJS

1)Rails controller

$ vi app/controllers/sessions_controller.rb

  def current_user
    remember_token = User.encrypt(cookies[:remember_token])
    current_user ||= User.find_by(remember_token: remember_token)
    if current_user
      gravatar_id = Digest::MD5::hexdigest(current_user.email.downcase)
      conn = ActiveRecord::Base.connection
      sql = "SELECT microposts.*,users.name,users.email " +
            "FROM microposts,users " +
            "WHERE (user_id IN (" +
            "SELECT followed_id FROM relationships WHERE follower_id = " +
            current_user.id.to_s + " )" +
            "OR user_id = " + current_user.id.to_s + " ) " +
            "AND microposts.user_id = users.id"
      feed = conn.select_all(sql)
      @user_info = {
        user: current_user,
        gravatar_url: "https://secure.gravatar.com/avatar/#{gravatar_id}",
        microposts: current_user.microposts,
        feed: feed,
        followed_users: current_user.followed_users,
        followers:  current_user.followers
      }
      render json: @user_info, status: :accepted
    else
      head :no_content
    end
  end

2)AngularJS template view

$ vi app/assets/templates/static_pages/home.html.erb

<h3>Micropost Feed</h3>
<ol class="microposts">
  <li ng-repeat="mp in currentitems">
    <a href="/users/{{mp.user_id}}">
      <img alt="{{mp.name}}"
           src="https://secure.gravatar.com/avatar/{{hash(mp.email)}}?s=60"
           class="gravatar"
      />
    </a>
    <a href="/users/{{mp.user_id}}">{{mp.name}}</a>
    <div>{{mp.content}}</div>
    <small class="text-muted">Posted {{mp.created_at | date:'medium'}}</small>
  </li>
</ol>