stage 0.2.0 → 0.3.1

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.
data/website/index.html CHANGED
@@ -33,7 +33,7 @@
33
33
  <h1>stage</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/stage"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/stage" class="numbers">0.2.0</a>
36
+ <a href="http://rubyforge.org/projects/stage" class="numbers">0.3.1</a>
37
37
  </div>
38
38
  <h1>&#x2192; &#8216;stage&#8217;</h1>
39
39
 
@@ -41,163 +41,13 @@
41
41
  <h2>What</h2>
42
42
 
43
43
 
44
- <p>Stage is a code template generator that utilizes helpers as presenters to reduce ruby code used in views. The initial release only works with Merb and DataMapper. Support for RubyOnRails, ActiveRecord, Sequel and other ORMs will be added as I get the time. Of course, contributions are welcome if you like the concept.</p>
44
+ <p>Stage is a code template generator that utilizes helpers as presenters to reduce ruby code used in views. Of course, contributions are welcome if you like the concept. I would especially like to hear of any code reduction suggestions.</p>
45
45
 
46
46
 
47
- <h2>Installing</h2>
48
-
49
-
50
- <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">stage</span></pre></p>
47
+ <h2><a href="merb.html">Merb Instructions</a></h2>
51
48
 
52
49
 
53
- <h2>Demonstration of usage</h2>
54
-
55
-
56
- <p><pre class='syntax'>
57
- <span class="global">$ </span><span class="ident">merb</span><span class="punct">-</span><span class="ident">gen</span> <span class="ident">stage</span> <span class="ident">page</span> <span class="ident">title</span><span class="symbol">:string</span> <span class="ident">content</span><span class="symbol">:text</span>
58
- <span class="ident">exists</span> <span class="ident">app</span>
59
- <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">controllers</span>
60
- <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">helpers</span>
61
- <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">models</span>
62
- <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span>
63
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span>
64
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">controllers</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">.</span><span class="ident">rb</span>
65
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">helpers</span><span class="punct">/</span><span class="ident">pages_helper</span><span class="punct">.</span><span class="ident">rb</span>
66
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">models</span><span class="punct">/</span><span class="ident">page</span><span class="punct">.</span><span class="ident">rb</span>
67
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">_data</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
68
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">_form</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
69
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">edit</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
70
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">index</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
71
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">new</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
72
- <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">show</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
73
- </pre></p>
74
-
75
-
76
- <p>The controller generated:
77
- <pre class='syntax'>
78
- <span class="keyword">class </span><span class="class">Pages</span> <span class="punct">&lt;</span> <span class="constant">Application</span>
79
- <span class="ident">before</span> <span class="symbol">:find_page</span><span class="punct">,</span> <span class="symbol">:only</span> <span class="punct">=&gt;</span> <span class="punct">[</span><span class="symbol">:show</span><span class="punct">,</span> <span class="symbol">:edit</span><span class="punct">,</span> <span class="symbol">:update</span><span class="punct">,</span> <span class="symbol">:delete</span><span class="punct">]</span>
80
-
81
- <span class="keyword">def </span><span class="method">index</span>
82
- <span class="attribute">@pages</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">all</span>
83
- <span class="ident">display</span> <span class="attribute">@pages</span>
84
- <span class="keyword">end</span>
85
-
86
- <span class="keyword">def </span><span class="method">show</span>
87
- <span class="ident">display</span> <span class="attribute">@page</span>
88
- <span class="keyword">end</span>
89
-
90
- <span class="keyword">def </span><span class="method">new</span>
91
- <span class="ident">only_provides</span> <span class="symbol">:html</span>
92
- <span class="attribute">@page</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">new</span>
93
- <span class="ident">render</span>
94
- <span class="keyword">end</span>
95
-
96
- <span class="keyword">def </span><span class="method">edit</span>
97
- <span class="ident">only_provides</span> <span class="symbol">:html</span>
98
- <span class="ident">render</span>
99
- <span class="keyword">end</span>
100
-
101
- <span class="keyword">def </span><span class="method">create</span>
102
- <span class="attribute">@page</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">params</span><span class="punct">[</span><span class="symbol">:page</span><span class="punct">])</span>
103
- <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">save</span>
104
- <span class="ident">redirect</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span> <span class="attribute">@page</span><span class="punct">)</span>
105
- <span class="keyword">else</span>
106
- <span class="ident">render</span> <span class="symbol">:new</span>
107
- <span class="keyword">end</span>
108
- <span class="keyword">end</span>
109
-
110
- <span class="keyword">def </span><span class="method">update</span>
111
- <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">update_attributes</span><span class="punct">(</span><span class="ident">params</span><span class="punct">[</span><span class="symbol">:page</span><span class="punct">])</span>
112
- <span class="ident">redirect</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span> <span class="attribute">@page</span><span class="punct">)</span>
113
- <span class="keyword">else</span>
114
- <span class="keyword">raise</span> <span class="constant">BadRequest</span>
115
- <span class="keyword">end</span>
116
- <span class="keyword">end</span>
117
-
118
- <span class="keyword">def </span><span class="method">delete</span>
119
- <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">destroy!</span>
120
- <span class="ident">redirect</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">)</span>
121
- <span class="keyword">else</span>
122
- <span class="keyword">raise</span> <span class="constant">BadRequest</span>
123
- <span class="keyword">end</span>
124
- <span class="keyword">end</span>
125
-
126
- <span class="ident">private</span>
127
- <span class="keyword">def </span><span class="method">find_page</span>
128
- <span class="attribute">@page</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">first</span><span class="punct">(</span><span class="ident">params</span><span class="punct">[</span><span class="symbol">:id</span><span class="punct">])</span>
129
- <span class="keyword">raise</span> <span class="constant">NotFound</span> <span class="keyword">unless</span> <span class="attribute">@page</span>
130
- <span class="keyword">end</span>
131
- <span class="keyword">end</span>
132
- </pre></p>
133
-
134
-
135
- <p>The edit page:
136
- <pre class='syntax'>
137
- <span class="punct">&lt;</span><span class="ident">h1</span><span class="punct">&gt;</span><span class="constant">Editing</span> <span class="ident">page</span><span class="punct">&lt;/</span><span class="regex">h1&gt;
138
-
139
- &lt;%= partial &quot;form&quot; %&gt;
140
-
141
- &lt;%= link_to 'Show', url(:page, @page) %&gt; |
142
- &lt;%= link_to 'Back', url(:pages) %&gt;<span class="normal">
143
- </span></span></pre></p>
144
-
145
-
146
- <p>The form partial:
147
- <pre class='syntax'>
148
- <span class="punct">&lt;%</span>
149
- <span class="ident">submit_label</span> <span class="punct">=</span> <span class="punct">&quot;</span><span class="string">Update</span><span class="punct">&quot;</span>
150
- <span class="ident">submit_label</span> <span class="punct">=</span> <span class="punct">&quot;</span><span class="string">Create</span><span class="punct">&quot;</span> <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">new_record?</span>
151
- <span class="punct">-%&gt;</span><span class="string">
152
-
153
- &lt;%= error_messages_for @page %</span><span class="punct">&gt;</span>
154
-
155
- <span class="punct">&lt;%</span> <span class="ident">form_for</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span> <span class="symbol">:action</span> <span class="punct">=&gt;</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span><span class="attribute">@page</span><span class="punct">))</span> <span class="keyword">do</span> <span class="punct">%&gt;</span><span class="string">
156
- &lt;%= partial :data %</span><span class="punct">&gt;</span>
157
- <span class="punct">&lt;</span><span class="ident">p</span><span class="punct">&gt;</span> <span class="punct">&lt;%=</span><span class="string"> submit_button submit_label %&gt; &lt;/p&gt;
158
- &lt;% end %&gt;<span class="normal">
159
- </span></span></pre></p>
160
-
161
-
162
- <p>The data partial (the show view calls this directly):
163
- <pre class='syntax'>
164
- <span class="punct">&lt;</span><span class="ident">p</span><span class="punct">&gt;</span>
165
- <span class="punct">&lt;</span><span class="ident">b</span><span class="punct">&gt;</span><span class="constant">Title</span><span class="punct">&lt;/</span><span class="regex">b&gt;&lt;br </span><span class="punct">/&gt;</span>
166
- <span class="punct">&lt;%=</span><span class="string"> page_title_value %&gt;
167
- &lt;/p&gt;
168
-
169
- &lt;p&gt;
170
- &lt;b&gt;Content&lt;/b&gt;&lt;br /&gt;
171
- &lt;%</span><span class="punct">=</span> <span class="ident">page_content_value</span> <span class="punct">%&gt;</span><span class="string">
172
- &lt;/p</span><span class="punct">&gt;</span>
173
- </pre></p>
174
-
175
-
176
- <p>As you can see, there are &lt;model&gt;_&lt;field&gt;_value methods. These are defined in the pages helper:
177
- <pre class='syntax'>
178
- <span class="keyword">module </span><span class="module">Merb</span>
179
- <span class="keyword">module </span><span class="module">PagesHelper</span>
180
- <span class="keyword">def </span><span class="method">page_title_value</span>
181
- <span class="keyword">if</span> <span class="attribute">@action_name</span> <span class="punct">==</span> <span class="punct">&quot;</span><span class="string">show</span><span class="punct">&quot;</span>
182
- <span class="attribute">@page</span><span class="punct">.</span><span class="ident">title</span>
183
- <span class="keyword">else</span>
184
- <span class="ident">text_field</span> <span class="symbol">:name</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">page[title]</span><span class="punct">&quot;,</span> <span class="symbol">:value</span> <span class="punct">=&gt;</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">title</span>
185
- <span class="keyword">end</span>
186
- <span class="keyword">end</span>
187
-
188
- <span class="keyword">def </span><span class="method">page_content_value</span>
189
- <span class="keyword">if</span> <span class="attribute">@action_name</span> <span class="punct">==</span> <span class="punct">&quot;</span><span class="string">show</span><span class="punct">&quot;</span>
190
- <span class="attribute">@page</span><span class="punct">.</span><span class="ident">content</span>
191
- <span class="keyword">else</span>
192
- <span class="ident">text_field</span> <span class="symbol">:name</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">page[content]</span><span class="punct">&quot;,</span> <span class="symbol">:value</span> <span class="punct">=&gt;</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">content</span>
193
- <span class="keyword">end</span>
194
- <span class="keyword">end</span>
195
- <span class="keyword">end</span>
196
- <span class="keyword">end</span>
197
- </pre></p>
198
-
199
-
200
- <p>I need to get more precise with the form helpers, but for now this will do.</p>
50
+ <h2><a href="rails.html">Rails Instructions</a></h2>
201
51
 
202
52
 
203
53
  <h2>Forum</h2>
@@ -229,7 +79,7 @@
229
79
 
230
80
  <p>Comments and suggestions are welcome via the <a href="http://groups.google.com/group/stonean_stage?hl=en">forum</a></p>
231
81
  <p class="coda">
232
- 20th April 2008<br>
82
+ 26th April 2008<br>
233
83
  Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
234
84
  </p>
235
85
  </div>
data/website/index.txt CHANGED
@@ -5,153 +5,11 @@ h1. &#x2192; 'stage'
5
5
 
6
6
  h2. What
7
7
 
8
- Stage is a code template generator that utilizes helpers as presenters to reduce ruby code used in views. The initial release only works with Merb and DataMapper. Support for RubyOnRails, ActiveRecord, Sequel and other ORMs will be added as I get the time. Of course, contributions are welcome if you like the concept.
9
-
10
- h2. Installing
11
-
12
- <pre syntax="ruby">sudo gem install stage</pre>
13
-
14
- h2. Demonstration of usage
15
-
16
- <pre syntax="ruby">
17
- $ merb-gen stage page title:string content:text
18
- exists app
19
- exists app/controllers
20
- exists app/helpers
21
- exists app/models
22
- exists app/views
23
- create app/views/pages
24
- create app/controllers/pages.rb
25
- create app/helpers/pages_helper.rb
26
- create app/models/page.rb
27
- create app/views/pages/_data.html.erb
28
- create app/views/pages/_form.html.erb
29
- create app/views/pages/edit.html.erb
30
- create app/views/pages/index.html.erb
31
- create app/views/pages/new.html.erb
32
- create app/views/pages/show.html.erb
33
- </pre>
34
-
35
- The controller generated:
36
- <pre syntax="ruby">
37
- class Pages < Application
38
- before :find_page, :only => [:show, :edit, :update, :delete]
39
-
40
- def index
41
- @pages = Page.all
42
- display @pages
43
- end
44
-
45
- def show
46
- display @page
47
- end
48
-
49
- def new
50
- only_provides :html
51
- @page = Page.new
52
- render
53
- end
54
-
55
- def edit
56
- only_provides :html
57
- render
58
- end
59
-
60
- def create
61
- @page = Page.new(params[:page])
62
- if @page.save
63
- redirect url(:page, @page)
64
- else
65
- render :new
66
- end
67
- end
68
-
69
- def update
70
- if @page.update_attributes(params[:page])
71
- redirect url(:page, @page)
72
- else
73
- raise BadRequest
74
- end
75
- end
76
-
77
- def delete
78
- if @page.destroy!
79
- redirect url(:page)
80
- else
81
- raise BadRequest
82
- end
83
- end
84
-
85
- private
86
- def find_page
87
- @page = Page.first(params[:id])
88
- raise NotFound unless @page
89
- end
90
- end
91
- </pre>
92
-
93
- The edit page:
94
- <pre syntax="ruby">
95
- <h1>Editing page</h1>
96
-
97
- <%= partial "form" %>
98
-
99
- <%= link_to 'Show', url(:page, @page) %> |
100
- <%= link_to 'Back', url(:pages) %>
101
- </pre>
102
-
103
- The form partial:
104
- <pre syntax="ruby">
105
- <%
106
- submit_label = "Update"
107
- submit_label = "Create" if @page.new_record?
108
- -%>
109
-
110
- <%= error_messages_for @page %>
111
-
112
- <% form_for(:page, :action => url(:page,@page)) do %>
113
- <%= partial :data %>
114
- <p> <%= submit_button submit_label %> </p>
115
- <% end %>
116
- </pre>
117
-
118
- The data partial (the show view calls this directly):
119
- <pre syntax="ruby">
120
- <p>
121
- <b>Title</b><br />
122
- <%= page_title_value %>
123
- </p>
124
-
125
- <p>
126
- <b>Content</b><br />
127
- <%= page_content_value %>
128
- </p>
129
- </pre>
130
-
131
- As you can see, there are &lt;model&gt;_&lt;field&gt;_value methods. These are defined in the pages helper:
132
- <pre syntax="ruby">
133
- module Merb
134
- module PagesHelper
135
- def page_title_value
136
- if @action_name == "show"
137
- @page.title
138
- else
139
- text_field :name => "page[title]", :value => @page.title
140
- end
141
- end
142
-
143
- def page_content_value
144
- if @action_name == "show"
145
- @page.content
146
- else
147
- text_field :name => "page[content]", :value => @page.content
148
- end
149
- end
150
- end
151
- end
152
- </pre>
153
-
154
- I need to get more precise with the form helpers, but for now this will do.
8
+ Stage is a code template generator that utilizes helpers as presenters to reduce ruby code used in views. Of course, contributions are welcome if you like the concept. I would especially like to hear of any code reduction suggestions.
9
+
10
+ h2. <a href="merb.html">Merb Instructions</a>
11
+
12
+ h2. <a href="rails.html">Rails Instructions</a>
155
13
 
156
14
  h2. Forum
157
15
 
data/website/merb.html ADDED
@@ -0,0 +1,244 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+ <title>
8
+ stage
9
+ </title>
10
+ <script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
11
+ <style>
12
+
13
+ </style>
14
+ <script type="text/javascript">
15
+ window.onload = function() {
16
+ settings = {
17
+ tl: { radius: 10 },
18
+ tr: { radius: 10 },
19
+ bl: { radius: 10 },
20
+ br: { radius: 10 },
21
+ antiAlias: true,
22
+ autoPad: true,
23
+ validTags: ["div"]
24
+ }
25
+ var versionBox = new curvyCorners(settings, document.getElementById("version"));
26
+ versionBox.applyCornersToAll();
27
+ }
28
+ </script>
29
+ </head>
30
+ <body>
31
+ <div id="main">
32
+
33
+ <h1>stage</h1>
34
+ <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/stage"; return false'>
35
+ <p>Get Version</p>
36
+ <a href="http://rubyforge.org/projects/stage" class="numbers">0.3.1</a>
37
+ </div>
38
+ <h1>&#x2192; &#8216;stage&#8217;</h1>
39
+
40
+
41
+ <h2>Merb Instructions</h2>
42
+
43
+
44
+ <h2>Installing</h2>
45
+
46
+
47
+ <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">stage</span></pre></p>
48
+
49
+
50
+ <h2>Demonstration of usage</h2>
51
+
52
+
53
+ <p><pre class='syntax'>
54
+ <span class="global">$ </span><span class="ident">merb</span><span class="punct">-</span><span class="ident">gen</span> <span class="ident">stage</span> <span class="ident">page</span> <span class="ident">title</span><span class="symbol">:string</span> <span class="ident">content</span><span class="symbol">:text</span>
55
+ <span class="ident">exists</span> <span class="ident">app</span>
56
+ <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">controllers</span>
57
+ <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">helpers</span>
58
+ <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">models</span>
59
+ <span class="ident">exists</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span>
60
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span>
61
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">controllers</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">.</span><span class="ident">rb</span>
62
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">helpers</span><span class="punct">/</span><span class="ident">pages_helper</span><span class="punct">.</span><span class="ident">rb</span>
63
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">models</span><span class="punct">/</span><span class="ident">page</span><span class="punct">.</span><span class="ident">rb</span>
64
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">_data</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
65
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">_form</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
66
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">edit</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
67
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">index</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
68
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">new</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
69
+ <span class="ident">create</span> <span class="ident">app</span><span class="punct">/</span><span class="ident">views</span><span class="punct">/</span><span class="ident">pages</span><span class="punct">/</span><span class="ident">show</span><span class="punct">.</span><span class="ident">html</span><span class="punct">.</span><span class="ident">erb</span>
70
+ </pre></p>
71
+
72
+
73
+ <p>The controller generated:
74
+ <pre class='syntax'>
75
+ <span class="keyword">class </span><span class="class">Pages</span> <span class="punct">&lt;</span> <span class="constant">Application</span>
76
+ <span class="ident">before</span> <span class="symbol">:find_page</span><span class="punct">,</span> <span class="symbol">:only</span> <span class="punct">=&gt;</span> <span class="punct">[</span><span class="symbol">:show</span><span class="punct">,</span> <span class="symbol">:edit</span><span class="punct">,</span> <span class="symbol">:update</span><span class="punct">,</span> <span class="symbol">:delete</span><span class="punct">]</span>
77
+
78
+ <span class="keyword">def </span><span class="method">index</span>
79
+ <span class="attribute">@pages</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">all</span>
80
+ <span class="ident">display</span> <span class="attribute">@pages</span>
81
+ <span class="keyword">end</span>
82
+
83
+ <span class="keyword">def </span><span class="method">show</span>
84
+ <span class="ident">display</span> <span class="attribute">@page</span>
85
+ <span class="keyword">end</span>
86
+
87
+ <span class="keyword">def </span><span class="method">new</span>
88
+ <span class="ident">only_provides</span> <span class="symbol">:html</span>
89
+ <span class="attribute">@page</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">new</span>
90
+ <span class="ident">render</span>
91
+ <span class="keyword">end</span>
92
+
93
+ <span class="keyword">def </span><span class="method">edit</span>
94
+ <span class="ident">only_provides</span> <span class="symbol">:html</span>
95
+ <span class="ident">render</span>
96
+ <span class="keyword">end</span>
97
+
98
+ <span class="keyword">def </span><span class="method">create</span>
99
+ <span class="attribute">@page</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">new</span><span class="punct">(</span><span class="ident">params</span><span class="punct">[</span><span class="symbol">:page</span><span class="punct">])</span>
100
+ <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">save</span>
101
+ <span class="ident">redirect</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span> <span class="attribute">@page</span><span class="punct">)</span>
102
+ <span class="keyword">else</span>
103
+ <span class="ident">render</span> <span class="symbol">:new</span>
104
+ <span class="keyword">end</span>
105
+ <span class="keyword">end</span>
106
+
107
+ <span class="keyword">def </span><span class="method">update</span>
108
+ <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">update_attributes</span><span class="punct">(</span><span class="ident">params</span><span class="punct">[</span><span class="symbol">:page</span><span class="punct">])</span>
109
+ <span class="ident">redirect</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span> <span class="attribute">@page</span><span class="punct">)</span>
110
+ <span class="keyword">else</span>
111
+ <span class="keyword">raise</span> <span class="constant">BadRequest</span>
112
+ <span class="keyword">end</span>
113
+ <span class="keyword">end</span>
114
+
115
+ <span class="keyword">def </span><span class="method">delete</span>
116
+ <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">destroy!</span>
117
+ <span class="ident">redirect</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">)</span>
118
+ <span class="keyword">else</span>
119
+ <span class="keyword">raise</span> <span class="constant">BadRequest</span>
120
+ <span class="keyword">end</span>
121
+ <span class="keyword">end</span>
122
+
123
+ <span class="ident">private</span>
124
+ <span class="keyword">def </span><span class="method">find_page</span>
125
+ <span class="attribute">@page</span> <span class="punct">=</span> <span class="constant">Page</span><span class="punct">.</span><span class="ident">first</span><span class="punct">(</span><span class="ident">params</span><span class="punct">[</span><span class="symbol">:id</span><span class="punct">])</span>
126
+ <span class="keyword">raise</span> <span class="constant">NotFound</span> <span class="keyword">unless</span> <span class="attribute">@page</span>
127
+ <span class="keyword">end</span>
128
+ <span class="keyword">end</span>
129
+ </pre></p>
130
+
131
+
132
+ <p>The edit page:
133
+ <pre class='syntax'>
134
+ <span class="punct">&lt;</span><span class="ident">h1</span><span class="punct">&gt;</span><span class="constant">Editing</span> <span class="ident">page</span><span class="punct">&lt;/</span><span class="regex">h1&gt;
135
+
136
+ &lt;%= partial &quot;form&quot; %&gt;
137
+
138
+ &lt;%= link_to 'Show', url(:page, @page) %&gt; |
139
+ &lt;%= link_to 'Back', url(:pages) %&gt;<span class="normal">
140
+ </span></span></pre></p>
141
+
142
+
143
+ <p>The form partial:
144
+ <pre class='syntax'>
145
+ <span class="punct">&lt;%</span>
146
+ <span class="ident">submit_label</span> <span class="punct">=</span> <span class="punct">&quot;</span><span class="string">Update</span><span class="punct">&quot;</span>
147
+ <span class="ident">submit_label</span> <span class="punct">=</span> <span class="punct">&quot;</span><span class="string">Create</span><span class="punct">&quot;</span> <span class="keyword">if</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">new_record?</span>
148
+ <span class="punct">-%&gt;</span><span class="string">
149
+
150
+ &lt;%= error_messages_for @page %</span><span class="punct">&gt;</span>
151
+
152
+ <span class="punct">&lt;%</span> <span class="ident">form_for</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span> <span class="symbol">:action</span> <span class="punct">=&gt;</span> <span class="ident">url</span><span class="punct">(</span><span class="symbol">:page</span><span class="punct">,</span><span class="attribute">@page</span><span class="punct">))</span> <span class="keyword">do</span> <span class="punct">%&gt;</span><span class="string">
153
+ &lt;%= partial :data %</span><span class="punct">&gt;</span>
154
+ <span class="punct">&lt;</span><span class="ident">p</span><span class="punct">&gt;</span> <span class="punct">&lt;%=</span><span class="string"> submit_button submit_label %&gt; &lt;/p&gt;
155
+ &lt;% end %&gt;<span class="normal">
156
+ </span></span></pre></p>
157
+
158
+
159
+ <p>The data partial (the show view calls this directly):
160
+ <pre class='syntax'>
161
+ <span class="punct">&lt;</span><span class="ident">p</span><span class="punct">&gt;</span>
162
+ <span class="punct">&lt;</span><span class="ident">b</span><span class="punct">&gt;</span><span class="constant">Title</span><span class="punct">&lt;/</span><span class="regex">b&gt;&lt;br </span><span class="punct">/&gt;</span>
163
+ <span class="punct">&lt;%=</span><span class="string"> page_title_value %&gt;
164
+ &lt;/p&gt;
165
+
166
+ &lt;p&gt;
167
+ &lt;b&gt;Content&lt;/b&gt;&lt;br /&gt;
168
+ &lt;%</span><span class="punct">=</span> <span class="ident">page_content_value</span> <span class="punct">%&gt;</span><span class="string">
169
+ &lt;/p</span><span class="punct">&gt;</span>
170
+ </pre></p>
171
+
172
+
173
+ <p>As you can see, there are &lt;model&gt;_&lt;field&gt;_value methods. These are defined in the pages helper:
174
+ <pre class='syntax'>
175
+ <span class="keyword">module </span><span class="module">Merb</span>
176
+ <span class="keyword">module </span><span class="module">PagesHelper</span>
177
+ <span class="keyword">def </span><span class="method">page_title_value</span>
178
+ <span class="keyword">if</span> <span class="attribute">@action_name</span> <span class="punct">==</span> <span class="punct">&quot;</span><span class="string">show</span><span class="punct">&quot;</span>
179
+ <span class="attribute">@page</span><span class="punct">.</span><span class="ident">title</span>
180
+ <span class="keyword">else</span>
181
+ <span class="ident">text_field</span> <span class="symbol">:name</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">page[title]</span><span class="punct">&quot;,</span> <span class="symbol">:value</span> <span class="punct">=&gt;</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">title</span>
182
+ <span class="keyword">end</span>
183
+ <span class="keyword">end</span>
184
+
185
+ <span class="keyword">def </span><span class="method">page_content_value</span>
186
+ <span class="keyword">if</span> <span class="attribute">@action_name</span> <span class="punct">==</span> <span class="punct">&quot;</span><span class="string">show</span><span class="punct">&quot;</span>
187
+ <span class="attribute">@page</span><span class="punct">.</span><span class="ident">content</span>
188
+ <span class="keyword">else</span>
189
+ <span class="ident">text_field</span> <span class="symbol">:name</span> <span class="punct">=&gt;</span> <span class="punct">&quot;</span><span class="string">page[content]</span><span class="punct">&quot;,</span> <span class="symbol">:value</span> <span class="punct">=&gt;</span> <span class="attribute">@page</span><span class="punct">.</span><span class="ident">content</span>
190
+ <span class="keyword">end</span>
191
+ <span class="keyword">end</span>
192
+ <span class="keyword">end</span>
193
+ <span class="keyword">end</span>
194
+ </pre></p>
195
+
196
+
197
+ <p>I need to get more precise with the form helpers, but for now this will do.</p>
198
+
199
+
200
+ <h2>Forum</h2>
201
+
202
+
203
+ <p><a href="http://groups.google.com/group/stonean_stage?hl=en">http://groups.google.com/group/stonean_stage?hl=en</a></p>
204
+
205
+
206
+ <h2>How to submit patches</h2>
207
+
208
+
209
+ <p>The Clone <span class="caps">URL</span>: git://github.com/stonean/stage.git</p>
210
+
211
+
212
+ <p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people&#8217;s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
213
+
214
+
215
+ <p>I&#8217;m new to git and this whole opensource project admin gig, so please be patient with my stumbling around.</p>
216
+
217
+
218
+ <h2>License</h2>
219
+
220
+
221
+ <p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
222
+
223
+
224
+ <h2>Contact</h2>
225
+
226
+
227
+ <p>Comments and suggestions are welcome via the <a href="http://groups.google.com/group/stonean_stage?hl=en">forum</a></p>
228
+ <p class="coda">
229
+ 26th April 2008<br>
230
+ Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
231
+ </p>
232
+ </div>
233
+
234
+ <script type="text/javascript">
235
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
236
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
237
+ </script>
238
+ <script type="text/javascript">
239
+ var pageTracker = _gat._getTracker("UA-4186995-1");
240
+ pageTracker._initData();
241
+ pageTracker._trackPageview();
242
+ </script>
243
+ </body>
244
+ </html>