ng_on_rails 0.0.1.2 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cf5e98c33661afb66786a5d04b5527ed082db98e
4
- data.tar.gz: 77df1507938c1ccf493367b57a667fe285565d95
3
+ metadata.gz: cb7057e26bdca810363ede7c7321dfa6c488b205
4
+ data.tar.gz: 074bf7d73e00c03becd410f63c1605546c63ae3e
5
5
  SHA512:
6
- metadata.gz: 7897c440eceb597afc38d6f698d818595bc24c1cf2169e62acfc898b56688e2842377f305256a11c8761729598a330b2bdb9b84cfad53023a1e8e7d9bc5bb7e9
7
- data.tar.gz: 0c2bba831949cd6c300dfd0c352a36aa86cfcd60aaab2448751a0a0143b1b5c122cd3c617dd9feb8cd5e3c7dee74ee8d47bb37d6aa4528505b0461655125ec80
6
+ metadata.gz: cd18e125548c1a9190d5c69544d9e3fe31a835b4b9bc72af4e6390019589436557208a69dea9d2fe7dbbc89d5f2d62c34f5e81fa316aaa134feda85f9d8a81b6
7
+ data.tar.gz: d46407676a418af219fd147e511feae0d3dc6933b6b0a1b2d9e71e677178004411ee6ea6645224f1bd92eef0fc502826a731aa9dc686c295d8f86a2baddadd6b
data/README.md CHANGED
@@ -28,9 +28,49 @@ gem 'ng_on_rails'
28
28
  //= require_tree .
29
29
  ```
30
30
 
31
- Note: NgOnRailsApp is automatically created if it doesn't already exsit
31
+ Finally, in your layout below the `javascript_include_tag "application"` load the Rails-service.
32
+
33
+ ```html.erb
34
+ <script>
35
+ = render( partial: 'angular_app/rails_service', formats: ['js'], locals: { ng_data: ng_data} )
36
+ </script>
37
+ ```
38
+
39
+ Here, ng_data is a rails varible discuss [below](#locals_to_json). A typical application layout (in Slim) might look like...
40
+ ```slim
41
+ - ng_data = {}
42
+ - ng_data['BUILD'] = true
43
+
44
+ doctype html
45
+ html
46
+ head
47
+ title NgOnRails | TestApp
48
+ = csrf_meta_tags
49
+ = stylesheet_link_tag "application", :media => "all"
50
+ == yield :meta
51
+ == yield :styles
52
+
53
+ body ng-app="NgOnRailsApp" ng_controller="AppController as ctrl"
54
+ .wrapper
55
+ == yield
56
+
57
+ / scripts
58
+ = javascript_include_tag "application"
59
+ script
60
+ = render( partial: 'angular_app/rails_service', formats: ['js'], locals: { ng_data: ng_data} )
61
+ == yield :javascripts
62
+ ```
63
+
64
+ ##### Service: Rails
65
+ As will be discussed in detail [below](#locals_to_json) NgOnRails will now provide you with a Rails-service that can be injected into your Angular Controllers. This service has all your rails variables contained in json. So @page and @pages will get mapped to Rails.page and Rails.pages to be used by your angular app.
66
+
67
+ ##### Directives: render and render\_view
68
+ NgOnRails provides you with two directives, `render` for displapying angular partials and `render_view` for displaying angular views. More details [here](#render_directives).
69
+
70
+ ##### Note: NgOnRailsApp
71
+ A AngularApp, NgOnRailsApp, is automatically created if it doesn't already exsit
32
72
  ```javascript
33
- # app/assets/javascripts/app.js
73
+ # ng_on_rails/app/assets/javascripts/app.js
34
74
  if (!window.NgOnRailsApp){
35
75
  window.NgOnRailsApp = angular.module("NgOnRailsApp", ["ngResource","ngAnimate","ngSanitize"])
36
76
  }
@@ -50,6 +90,8 @@ window.NgOnRailsApp = angular.module("NgOnRailsApp", ["ngResource","ngAnimate","
50
90
 
51
91
  I would love feed back (especially on convention choices) and possibly other contributers. Send me a note!
52
92
 
93
+ -----------------------------------------------------------
94
+
53
95
  #### Overview
54
96
 
55
97
  As time goes on generators for angular controllers and services (rails-models) will be added, as well as some view helpers and directives. For the time being however the the gem is rather simple.
@@ -68,7 +110,7 @@ To get this work you simply need to load the rails_service.js.erb partial
68
110
  ```
69
111
  "rails_service.js.erb" calls the `locals_to_json` helper method to automatically turn instance variables into json. Here `ng_data` is a local rails variable used to customize how this is converted. This will be discussed in detail [below](#locals_to_json).
70
112
 
71
- * Your angular views(partials) should be placed in app/views/angular_app. This solution is discussed in a handfull of places including [here](http://stackoverflow.com/questions/12116476/rails-static-html-template-files-in-the-asset-pipeline-and-caching-in-developmen), but the key parts are:
113
+ * Your angular views and partials should be placed in your\_app/app/views/angular_app. This solution is discussed in a handfull of places including [here](http://stackoverflow.com/questions/12116476/rails-static-html-template-files-in-the-asset-pipeline-and-caching-in-developmen), but the key parts are:
72
114
  ```ruby
73
115
  # routes.rb
74
116
  scope :angular_app do
@@ -81,22 +123,7 @@ def template
81
123
  render template: '/angular_app/' + @path, layout: nil
82
124
  end
83
125
  ```
84
- You can then use the angular directive 'render'
85
- ```javascript
86
- NgOnRailsApp.directive(
87
- "render",
88
- function(){
89
- return {
90
- restrict: "AE",
91
- transclude: true,
92
- template: function(el,attrs){
93
- return '<div ng_include="\'/angular_app/'+attrs.url+'.html\'"></div>'
94
- }
95
- }
96
- }
97
- )
98
- ```
99
- to load your angualar views in at 'app/views/angular_app'
126
+ Now you can then use the ng\_on\_rails directives 'render' and 'render\_view' to load your your angular partials and views in 'your\_app/app/views/angular\_app'.
100
127
 
101
128
  #### Conventions
102
129
 
@@ -116,19 +143,43 @@ The test_app serves as an example of the conventions discussed below, but before
116
143
  |-- angular_app/
117
144
 
118
145
  ```
119
- Files should be named/put in folders in the same maner that you would in Rails. For instance, if you have a Page model, you would have a pages_controller.js and a service page.js. Then under views you would have pages/{show.html,index.html,...}. *The way these views are handled makes them more like partials that views but for now at least I am not prefixing the name with and underscore "\_"*
146
+ Files should be named/put in folders in the same maner that you would in Rails. For instance, if you have a Page model, you would have a pages_controller.js and a service page.js. Then under views you would have pages/{show.html,index.html,\_page.html,\_form.html,...}.
147
+
148
+ <a name="render_directives"></a>
149
+ As in rails files prefixed with "\_" are 'partials' and should be loaded with the render directive. The 'views' should be loaded with the render\_view directive. The main distinguishing factor between views and partials are if they load a angular controller. Here are two examples: The first is a 'view', the index view for a Doc model, and the second is partial that displays information on the doc.
150
+ ```slim
151
+ # VIEW: your_app/app/views/angular_app/docs/index.html.slim
152
+ div ng_controller="DocsController as ctrl" ng-init="ctrl.setDocs(docs)"
153
+ .div-table
154
+ .tr.header
155
+ .td.id ID
156
+ .td.name NAME
157
+ .td ...
158
+
159
+ # PARTIAL: your_app/app/views/angular_app/docs/_doc.html.slim
160
+ h3 Doc Details
161
+ h5
162
+ | ID:
163
+ span ng-bind="doc.id"
164
+ h5 CREATED AT
165
+ div ng-bind="doc.created_at"
166
+ h5 DESCRIPTION
167
+ div ng-bind="doc.description"
168
+ ```
169
+ Note that using distinguishing characterisic of loading the controller via `ng_controller` loading layout is parallel to how views and partials are distinguished in rails.
120
170
 
121
- * As for views, I try to have as little AngularJS outside of my angular_app folder. I will load the "Rails" service and set `ng-app="NgOnRailsApp"` in the application layout. Additionally I will usuallly have an angular `AppController` that is very limited in behavior that is part of the application layout. Again assuming I have a "Page" model I will handle the views like this
171
+ * Note: I try to have as little AngularJS outside of my angular_app folder. I will load the "Rails" service and set `ng-app="NgOnRailsApp"` in the application layout. Additionally I will usuallly have an angular `AppController` that is very limited in behavior that is part of the application layout. Again assuming I have a "Page" model I will handle the views like this
122
172
 
123
173
  ```html
124
- # app/views/pages/index.html
125
- <!-- Apart from this render directive don't put any other angular in this file -->
126
- <div render="true" url="pages/index" ng-init="pages=ctrl.rails.pages"></div>
174
+ # your_app/app/views/pages/index.html
175
+ <!-- Apart from this render_view directive don't put any other angular in this file -->
176
+ <div render_view="true" url="pages/index" ng-init="pages=ctrl.rails.pages"></div>
127
177
 
128
178
 
129
- # app/views/angular_app/pages/show.html
179
+ # your_app/app/views/angular_app/pages/show.html
130
180
  <div ng_controller="PagesController as ctrl">
131
181
  <div ng-repeat="page in pages">
182
+ <div render='true' url='pages/page'>
132
183
  <div ng-show="ctrl.is_editing(page)">...
133
184
  ```
134
185
  *In the above, `ctrl.rails` has been set to the Rails service in the AppController*
@@ -1,3 +1,17 @@
1
+ NgOnRailsApp.directive(
2
+ "renderView",
3
+ function(){
4
+ return {
5
+ restrict: "AE",
6
+ transclude: true,
7
+ template: function(el,attrs){
8
+ format = attrs.format || "html"
9
+ console.log(attrs.url,format)
10
+ return '<div ng_include="\'/angular_app/'+attrs.url+'.'+format+'\'"></div>'
11
+ }
12
+ }
13
+ }
14
+ )
1
15
  NgOnRailsApp.directive(
2
16
  "render",
3
17
  function(){
@@ -5,7 +19,15 @@ NgOnRailsApp.directive(
5
19
  restrict: "AE",
6
20
  transclude: true,
7
21
  template: function(el,attrs){
8
- return '<div ng_include="\'/angular_app/'+attrs.url+'.html\'"></div>'
22
+ format = attrs.format || "html"
23
+ url_parts = attrs.url.split("/")
24
+ if (url_parts[url_parts.length-1].trim()==""){
25
+ url_parts.pop()
26
+ }
27
+ last = url_parts.pop()
28
+ url_parts.push("_"+last)
29
+ path = url_parts.join("/")
30
+ return '<div ng_include="\'/angular_app/'+path+'.'+format+'\'"></div>'
9
31
  }
10
32
  }
11
33
  }
@@ -1,3 +1,3 @@
1
1
  module NgOnRails
2
- VERSION = "0.0.1.2"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ng_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.2
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brookie Williams