アーカイブ

AngularJSとRails4でRestアプリ作成(4)RESTアクションをfactoryメソッドを使ってサービス化

前回、AngularJSのresourceサービスを使ってサーバーのデータベースからデータを取得して表示しました。
今回は、サーバーに対する$resourceサービスのRESTアクション(create、index、show、update、destroy)をサービスとして定義します。
続きを読む →

AngularJSとRails4でRestアプリ作成(2)AngularJSのルート、テンプレートの設定

1)AngularJSのrouteサービスを導入
 
①angular-routeをインクルード
 
$ vi app/assets/javascripts/application.js
 
//= require angular-route
 
②ngRouteを依存性の設定に追加
 
$ vi app/assets/javascripts/mymodule.js
 
var mymodule = angular.module(“myModule”, [‘ngRoute’]);
 
2)ルートプロバイダ、パーシャルテンプレートの設定
 
ファイル内でRailsのヘルパーを使用するため、ファイルの拡張子に.erbを追加しています。
$ vi app/assets/javascripts/mymodule.js.erb

var mymodule = angular.module("myModule", ['ngRoute']);

mymodule.config(function($routeProvider) {
  $routeProvider
    .when("/users/dummy", {
      templateUrl: "<%= asset_path('users/dummy.html') %>",
      controller: "UsersDummyCtrl" })
    .otherwise({
      templateUrl: "<%= asset_path('users/index.html') %>",
      controller: "UsersIndexCtrl" });
});

 
3)インデックスのコントローラファイル作成
 
上記でAngularJSのルート設定を行い、各ルート毎にパーシャルテンプレートとコントローラを定義する形に変更したので、インデックス用のコントローラを定義します。
 
$ vi app/assets/javascripts/mymodule.js.erb

mymodule.controller("UsersIndexCtrl", function($scope) {
  $scope.users = [
    {
      name: "相川 一郎",
      email: "aikawa@example.com"
    },
    {
      name: "石井 二郎",
      email: "ishii@example.com"
    },
  ]
});

 
4)パーシャルテンプレートファイルを作成
 
①indexのパーシャルテンプレートを作成
 
今までapp/views/users/index.html.erbに記述していた内容をパーシャルテンプレートファイルに記述します。
 
動作確認のためダミーページへのリンクを追加しています。
 
$ vi app/assets/templates/users/index.html

<div ng-controller="UsersIndexCtrl">
  <h3>ユーザー一覧</h3>

  <table class="table table-bordered">
    <thead>
      <td>名前</td>
      <td>メールアドレス</td>
    </thead>
    <tbody>
      <tr ng-repeat="user in users">
        <td>
          {_{user.name}}
        </td>
        <td>
          {_{user.email}}
        </td>
      </tr>
    </tbody>
  </table>
  <a href="#/users/dummy">ダミー</a>
</div>

 
②ダミーページのパーシャルビューを仮作成
 
$ vi app/assets/templates/users/dummy.html
 
<h3>ダミー</h3>
 
5)AngularJSのレイアウトテンプレートファイルを作成
 
Railsのconfig/route.rbでUsersコントローラのindexアクションをrootにしているので、とりあえずこのビューをレイアウトテンプレートファイルとします。
 
$ vi app/views/users/index.html.erb
 
<div ng-view></div>
 
6)動作確認
 
http://localhost:3000/
 
上記URLでインデックスページが表示され、ダミーのリンク押下でダミーページが表示される事を確認します。

AngularJSとRails4でRestアプリ作成(1)AngularJSインストール、動作確認

1)アプリ作成
 
$ rails new rest –skip-test-unit
 
2)Gemfile設定、インストール
 
①Gemfile
 
・多くの機能がAngularJSと重複するようなので、ここではTurbolinksを無効にしています。
 
$ vi Gemfile

#無効にする
#gem 'turbolinks'
#コメントを削除
gem 'therubyracer',  platforms: :ruby
#追加
gem 'bootstrap-sass'
gem 'angularjs-rails'

 
②インストール
 
$ bundle install
 
3)AngularJSをインクルード
 
$ vi app/assets/javascripts/application.js

//= require jquery
//= require jquery_ujs
//= require angular

 
4)Bootstrap3をスタイルシートファイルでインポート
 
$ vi app/assets/stylesheets/main.css.scss
 
@import “bootstrap”;
 
5)Railsコントローラ作成
 
Usersコントローラとindexアクションを作成します。
 
$ rails generate controller Users index
 
6)AngularJSのモジュール、コントローラ設定
 
①コントローラファイル作成
 
モジュールとコントローラを定義します。
 
$ vi app/assets/javascripts/mymodule.js

var mymodule = angular.module("myModule", []);

mymodule.controller("UsersCtrl", function($scope) {
  $scope.users = [
    { 
      name: "相川 一郎",
      email: "aikawa@example.com"
    },
    { 
      name: "石井 二郎",
      email: "ishii@example.com"
    },
  ]
});

 
②インクルード設定追加
 
$ vi app/assets/javascripts/application.js
 
//= require mymodule
 
7)アプリケーションレイアウトファイル作成
 
ターボリンクを無効にしているのでインクルード部分の’data-turbolinks-track’ => true を削除します。
 
ng-appでモジュール名を指定します。
 
$ vi app/views/layouts/application.html.erb

<!DOCTYPE html>
<html ng-app="myModule">
<head>
  <title>Rest</title>
  <%= stylesheet_link_tag    'application', media: 'all' %>
  <%= javascript_include_tag 'application' %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

 
8)ビューを作成
 
$ vi app/views/users/index.html.erb

<div ng-controller="UsersCtrl">
  <h3>ユーザー一覧</h3>

  <table class="table table-bordered">
    <thead>
      <td>名前</td>
      <td>メールアドレス</td>
    </thead>
    <tbody>
      <tr ng-repeat="user in users">
        <td>
          {_{user.name}}
        </td>
        <td>
          {_{user.email}}
        </td>
      </tr>
    </tbody>
  </table>
</div>

 
9)Railsのルート設定
 
$ vi config/routes.rb
 
root to: ‘users#index’
 
10)動作確認
 
http://localhost:3000/

Bootstrap3のOffcanvasのJavaScriptをAngularJSで実行する方法

Bootstrap3のOffcanvasのサンプルをベースにレイアウトを作成しています。JavaScriptの機能をBootstrap3同梱のものからAngularJSに変更する手順をまとめました。

目次
(1)Turbolinksと一緒にAngularJSを使用する場合の注意点
(2)AngularJSの依存性のアノテーションの記述に注意
(3)折りたたみの機能をBootstrapの記述からAngularJSに変更
(4)”Toggle nav”の部分をAngularJSを使って変更
続きを読む →

Ruby on Railsにブートストラップ3とAngularJSを導入する方法

Ruby on Rails環境にCSSフレームワークとしてブートストラップ3、JavaScriptフレームワークとしてAngularJSを導入する手順です。
 
ブートストラップ3でもJavaScriptを使用していてAngularJSの機能との干渉が気になるところですが、対応しているコンポーネントhttp://angular-ui.github.io/bootstrap/がありました。
ブートストラップ3のJavaScript機能は使用せず、こちらのツールを使用しています。
続きを読む →

ブートストラップ3のjumbotronの設定内容と修整方法

ブートストラップ3のjumbotronは、offcanvasのサンプルでも使用されていますがサイトタイトル部分として利用できます。
このjumbotronのデフォルトの設定内容を確認し、デフォルトから修整してみました。
 
ここでは、サンプルOffcanvasで作成したサンプルページのjumbotronを修整してみます。
続きを読む →