{"id":1140,"date":"2015-08-05T05:05:53","date_gmt":"2015-08-05T05:05:53","guid":{"rendered":"http:\/\/www.honobono-life.info\/wpeng\/?p=1140"},"modified":"2015-08-05T05:05:53","modified_gmt":"2015-08-05T05:05:53","slug":"adding-microposts-count-and-gravatar-to-home-page-with-angularjs","status":"publish","type":"post","link":"http:\/\/www.honobono-life.info\/wpeng\/adding-microposts-count-and-gravatar-to-home-page-with-angularjs\/","title":{"rendered":"Ruby on Rails Tutorial adding microposts count and gravatar to home page with AngularJS"},"content":{"rendered":"<p><strong>1)Rails controller<\/strong><\/p>\r\n\r\n<p>$ vi app\/controllers\/sessions_controller.rb<\/p>\r\n\r\n<pre class=\"prettyprint\">\r\n  def create\r\n    user = User.find_by(email: session_params[:email].downcase)\r\n    if user &amp;&amp; user.authenticate(session_params[:password])\r\n      remember_token = User.new_remember_token\r\n      cookies.permanent[:remember_token] = remember_token\r\n      user.update_attribute(:remember_token, User.encrypt(remember_token))\r\n      gravatar_id = Digest::MD5::hexdigest(user.email.downcase)\r\n      microposts = user.microposts\r\n      @user_info = {\r\n        user: user,\r\n        gravatar_url: &quot;https:\/\/secure.gravatar.com\/avatar\/#{gravatar_id}&quot;,\r\n        microposts: microposts\r\n      }\r\n      render json: @user_info, status: :accepted, location: user\r\n    else\r\n      msg = {&quot;password&quot; =&gt; [&quot;Invalid email\/password combination&quot;]}\r\n      render json: msg, status: :unprocessable_entity\r\n    end\r\n  end\r\n\r\n  def current_user\r\n    remember_token = User.encrypt(cookies[:remember_token])\r\n    current_user ||= User.find_by(remember_token: remember_token)\r\n    if current_user\r\n      gravatar_id = Digest::MD5::hexdigest(current_user.email.downcase)\r\n      microposts = current_user.microposts\r\n      @user_info = {\r\n        user: current_user,\r\n        gravatar_url: &quot;https:\/\/secure.gravatar.com\/avatar\/#{gravatar_id}&quot;,\r\n        microposts: microposts\r\n      }\r\n      render json: @user_info, status: :accepted\r\n    else\r\n      head :no_content\r\n    end\r\n  end<\/pre>\r\n\r\n<p><strong>2)AngularJS &quot;UsersNewCtrl&quot; controller<\/strong><\/p>\r\n\r\n<pre class=\"prettyprint\">\r\nmyModule.controller(&quot;UsersNewCtrl&quot;, function($scope, userResource, $location, flashService, $routeParams, sessionResource, $q) {\r\n.....\r\n  $scope.submit = function() {\r\n    function success(response) {\r\n.........\r\n      var user_info = { \r\n        user: response,\r\n        gravatar_url: &quot;https:\/\/secure.gravatar.com\/avatar\/&quot; + md5(response.email.toLowerCase())\r\n      };\r\n      flashService.setUser(user_info);\r\n      $location.path(&quot;\/users\/&quot; + response.id);\r\n    }<\/pre>\r\n\r\n<p><strong>3)AngularJS &quot;HomeCtrl&quot; controller and template view<\/strong><\/p>\r\n\r\n<p><strong>1.AngularJS &quot;HomeCtrl&quot; controller<\/strong><\/p>\r\n\r\n<p>$ vi app\/assets\/javascripts\/mymodule.js.erb<\/p>\r\n\r\n<pre class=\"prettyprint\">\r\nmyModule.controller(&quot;HomeCtrl&quot;, function($scope,flashService) {\r\n  $scope.chkSignin = function() {\r\n    return flashService.getUser();\r\n  };\r\n});<\/pre>\r\n\r\n<p><strong>2.AngularJS template view<\/strong><\/p>\r\n\r\n<p>$ vi app\/assets\/templates\/static_pages\/home.html.erb<\/p>\r\n\r\n<div ng-non-bindable><pre class=\"prettyprint\">\r\n&lt;div ng-controller=&quot;HomeCtrl&quot;&gt;\r\n  &lt;div ng-show=&quot;chkSignin().user.id &gt; 0&quot; class=&quot;row&quot;&gt;\r\n    &lt;div class=&quot;col-sm-4&quot;&gt;\r\n      &lt;a href=&quot;\/users\/{{chkSignin().user.id}}&quot;&gt;\r\n        &lt;img alt=&quot;{{chkSignin().user.name}}&quot;\r\n             src=&quot;{{chkSignin().gravatar_url}}?s=60&quot;\r\n             class=&quot;gravatar&quot;\r\n        \/&gt;\r\n      &lt;\/a&gt;\r\n      &lt;h4&gt;{{chkSignin().user.name}}&lt;\/h4&gt;\r\n      &lt;span&gt;&lt;a href=&quot;\/users\/{{chkSignin().user.id}}&quot;&gt;view my profile&lt;\/a&gt;&lt;\/span&gt;&lt;br \/&gt;\r\n      &lt;ng-pluralize count=&quot;chkSignin().microposts.length&quot;\r\n                    when=&quot;{&#39;0&#39;: &#39;0 micropost&#39;,\r\n                           &#39;one&#39;: &#39;1 micropost&#39;,\r\n                           &#39;other&#39;: &#39;{} microposts&#39;}&quot;&gt;\r\n      &lt;\/ng-pluralize&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/div&gt;\r\n  &lt;div ng-hide=&quot;chkSignin().user.id &gt; 0&quot;&gt;\r\n    &lt;div class=&quot;jumbotron&quot;&gt;\r\n      &lt;h1&gt;Welcome to the Sample App&lt;\/h1&gt;\r\n.........\r\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>1)Rails controller $ vi app\/controllers\/sessions_controller.rb def create user = User.find_by(email: session_params[:email].downcase) if user &amp;&amp; user.authenticate(session_params[:password]) remember_token = User.new_remember_token cookies.permanent[:remember_token] = remember_token user.update_attribute(:remember_token, User.encrypt(remember_token)) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) microposts = user.microposts @user_info = { user: user, gravatar_url: &quot;https:\/\/secure.gravatar.com\/avatar\/#{gravatar_id}&quot;, microposts: microposts } render json: @user_info, status: :accepted, location: user else msg = {&quot;password&quot; =&gt; [&quot;Invalid email\/password combination&quot;]} render [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[137],"tags":[35,148,181],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/1140"}],"collection":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/comments?post=1140"}],"version-history":[{"count":1,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/1140\/revisions"}],"predecessor-version":[{"id":1141,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/1140\/revisions\/1141"}],"wp:attachment":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/media?parent=1140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/categories?post=1140"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/tags?post=1140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}