Ruby on Rails
Winkel mit Schienen konfigurieren
Suche…
Winkel mit Schienen 101
Schritt 1: Erstellen Sie eine neue Rails-App
gem install rails -v 4.1
rails new angular_example
Schritt 2: Turbolinks entfernen
Das Entfernen von Turbolinks erfordert das Entfernen aus dem Gemfile.
gem 'turbolinks'
Entfernen Sie die require
aus app/assets/javascripts/application.js
:
//= require turbolinks
Schritt 3: Fügen Sie AngularJS zur Asset-Pipeline hinzu
Damit Angular mit der Rails-Asset-Pipeline arbeiten kann, müssen wir der Gemfile Folgendes hinzufügen:
gem 'angular-rails-templates'
gem 'bower-rails'
Führen Sie nun den Befehl aus
bundle install
Fügen Sie bower
damit wir die AngularJS-Abhängigkeit installieren können:
rails g bower_rails:initialize json
Hinzufügen von Angular zu bower.json
:
{
"name": "bower-rails generated dependencies",
"dependencies": {
"angular": "latest",
"angular-resource": "latest",
"bourbon": "latest",
"angular-bootstrap": "latest",
"angular-ui-router": "latest"
}
}
Nun, da bower.json
mit den richtigen Abhängigkeiten eingerichtet ist, installieren wir sie:
bundle exec rake bower:install
Schritt 4: Organisieren Sie die Angular App
Erstellen Sie die folgende Ordnerstruktur in app/assets/javascript/angular-app/
:
templates/
modules/
filters/
directives/
models/
services/
controllers/
app/assets/javascripts/application.js
in app/assets/javascripts/application.js
die require
für Angular, den Vorlagenhelfer und die Angular-App-Dateistruktur hinzu. So was:
//= require jquery
//= require jquery_ujs
//= require angular
//= require angular-rails-templates
//= require angular-app/app
//= require_tree ./angular-app/templates
//= require_tree ./angular-app/modules
//= require_tree ./angular-app/filters
//= require_tree ./angular-app/directives
//= require_tree ./angular-app/models
//= require_tree ./angular-app/services
//= require_tree ./angular-app/controllers
Schritt 5: Starten Sie die Angular App
Erstellen Sie app/assets/javascripts/angular-app/app.js.coffee
:
@app = angular.module('app', [ 'templates' ])
@app.config([ '$httpProvider', ($httpProvider)->
$httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrftoken]').attr('content') ]) @app.run(-> console.log 'angular app running' )
Erstellen Sie ein Angular-Modul unter app/assets/javascripts/angular-app/modules/example.js.coffee.erb
:
@exampleApp = angular.module('app.exampleApp', [ # additional dependencies here ]) .run(-> console.log 'exampleApp running' )
Erstellen Sie einen Angular-Controller für diese App unter app/assets/javascripts/angular-app/controllers/exampleCtrl.js.coffee
:
angular.module('app.exampleApp').controller("ExampleCtrl", [ '$scope', ($scope)-> console.log 'ExampleCtrl running' $scope.exampleValue = "Hello angular and rails" ])
Fügen Sie nun eine Route zu Rails hinzu, um die Kontrolle an Angular zu übergeben. In config/routes.rb
:
Rails.application.routes.draw do get 'example' => 'example#index' end
Generieren Sie den Rails-Controller, um auf diese Route zu reagieren:
rails g controller Example
In app/controllers/example_controller.rb
:
class ExampleController < ApplicationController
def index
end
end
In der Ansicht müssen wir angeben, welche Angular-App und welcher Angular-Controller diese Seite steuert. Also in app/views/example/index.html.erb
:
<div ng-app='app.exampleApp' ng-controller='ExampleCtrl'>
<p>Value from ExampleCtrl:</p>
<p>{{ exampleValue }}</p>
</div>
Starten Sie Ihren Rails-Server und besuchen Sie http: // localhost: 3000 / example , um die App anzuzeigen.