{"id":1078,"date":"2015-08-01T00:09:19","date_gmt":"2015-08-01T00:09:19","guid":{"rendered":"http:\/\/www.honobono-life.info\/wpeng\/?p=1078"},"modified":"2015-08-01T00:14:30","modified_gmt":"2015-08-01T00:14:30","slug":"user-show-view-gravatar-image-sidebar","status":"publish","type":"post","link":"http:\/\/www.honobono-life.info\/wpeng\/user-show-view-gravatar-image-sidebar\/","title":{"rendered":"Ruby on Rails Tutorial user show view, gravatar image and a sidebar"},"content":{"rendered":"<p><strong>1)Rails controller show action<\/strong><\/p>\r\n\r\n<p>$ vi app\/controllers\/users_controller.rb<\/p>\r\n\r\n<pre class=\"prettyprint\">\r\n  def show\r\n    user = User.find(params[:id])\r\n    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)\r\n    @user_info = {\r\n      user: user,\r\n      gravatar_url: &quot;https:\/\/secure.gravatar.com\/avatar\/#{gravatar_id}&quot;\r\n    }\r\n    render json: @user_info\r\n  end<\/pre>\r\n\r\n<p><strong>2)AngularJS route<\/strong><\/p>\r\n\r\n<p>$ vi app\/assets\/javascripts\/mymodule.js.erb<\/p>\r\n\r\n<pre class=\"prettyprint\">\r\nmyModule = angular.module(&#39;myModule&#39;, [&#39;ui.bootstrap&#39;,&#39;ngRoute&#39;,&#39;ngResource&#39;]);\r\n\r\nmyModule.config(function($routeProvider, $locationProvider) {\r\n  $locationProvider.html5Mode(true);\r\n  $routeProvider\r\n......\r\n    .when(&quot;\/users\/:id&quot;, {\r\n     templateUrl: &quot;&lt;%= asset_path(&#39;users\/show.html.erb&#39;) %&gt; &quot;\r\n     })<\/pre>\r\n\r\n<p><strong>3)AngularJS controller &quot;UsersShowCtrl&quot;<\/strong><\/p>\r\n\r\n<p>$ vi app\/assets\/javascripts\/mymodule.js.erb<\/p>\r\n\r\n<pre class=\"prettyprint\">\r\nmyModule.factory(&quot;userResource&quot;, function($resource) {\r\n  return $resource(&quot;\/app\/users\/:id&quot;, { id: &quot;@id&quot; },\r\n    {\r\n.........\r\n      &#39;show&#39;:    { method: &#39;GET&#39;, isArray: false },\r\n.........\r\n    }\r\n  );\r\n});\r\n\r\nmyModule.controller(&quot;UsersShowCtrl&quot;, function($scope, $routeParams, userResource) {\r\n  $scope.user_info = userResource.show({ id: $routeParams.id });\r\n});<\/pre>\r\n\r\n<p><strong>4)AngularJS template&nbsp;<\/strong><\/p>\r\n\r\n<p>$ vi app\/assets\/templates\/users\/show.html.erb<\/p>\r\n\r\n<div ng-non-bindable><pre class=\"prettyprint\">\r\n&lt;div ng-controller=&quot;UsersShowCtrl&quot;&gt;\r\n  &lt;div class=&quot;row&quot;&gt;\r\n    &lt;div class=&quot;col-xs-6 col-sm-4&quot;&gt;\r\n      &lt;h3&gt;{{user_info.user.name}}&lt;\/h3&gt;\r\n      &lt;h1&gt;\r\n    &lt;img alt=&quot;{{user_info.user.name}}&quot; src=&quot;{{user_info.gravatar_url}}&quot; \/&gt;\r\n    {{user_info.user.name}}\r\n      &lt;\/h1&gt;\r\n    &lt;\/div&gt;\r\n    &lt;div class=&quot;col-xs-6 col-sm-8&quot;&gt;\r\n      &lt;h3&gt;Main View&lt;\/h3&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/div&gt;\r\n<\/pre><\/div>\r\n\r\n<p><strong>5)Rails route<\/strong><\/p>\r\n\r\n<p><strong>*Preblem<\/strong><\/p>\r\n\r\n<p>1.&quot;http:\/\/localhost:3000\/users\/1&quot;<br \/>\r\n2.browser reload<br \/>\r\n3.&quot;No route&quot; error<\/p>\r\n\r\n<p><strong>*Avoidance<\/strong><\/p>\r\n\r\n<p>$ vi config\/routes.rb<\/p>\r\n\r\n<p>get &#39;users\/*other&#39;, to: &#39;layouts#index&#39;<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>1)Rails controller show action $ vi app\/controllers\/users_controller.rb def show user = User.find(params[:id]) gravatar_id = Digest::MD5::hexdigest(user.email.downcase) @user_info = { user: user, gravatar_url: &quot;https:\/\/secure.gravatar.com\/avatar\/#{gravatar_id}&quot; } render json: @user_info end 2)AngularJS route $ vi app\/assets\/javascripts\/mymodule.js.erb myModule = angular.module(&#39;myModule&#39;, [&#39;ui.bootstrap&#39;,&#39;ngRoute&#39;,&#39;ngResource&#39;]); myModule.config(function($routeProvider, $locationProvider) { $locationProvider.html5Mode(true); $routeProvider &#8230;&#8230; .when(&quot;\/users\/:id&quot;, { templateUrl: &quot;&lt;%= asset_path(&#39;users\/show.html.erb&#39;) %&gt; &quot; }) 3)AngularJS controller &quot;UsersShowCtrl&quot; $ vi [&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,149],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/1078"}],"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=1078"}],"version-history":[{"count":2,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/1078\/revisions"}],"predecessor-version":[{"id":1081,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/posts\/1078\/revisions\/1081"}],"wp:attachment":[{"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/media?parent=1078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/categories?post=1078"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.honobono-life.info\/wpeng\/wp-json\/wp\/v2\/tags?post=1078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}