-
Notifications
You must be signed in to change notification settings - Fork 0
/
rails-haml.html
113 lines (111 loc) · 8.37 KB
/
rails-haml.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Using Haml with Rails</title>
<link rel="stylesheet" href="/css/screen.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="/css/gollum.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="/css/syntax.css" type="text/css" charset="utf-8" />
<script src="http://code.jquery.com/jquery-1.6.min.js" type="text/javascript"></script>
<script src="/javascript/jquery.text_selection-1.0.0.min.js" type="text/javascript"></script>
<script src="/javascript/jquery.previewable_comment_form.js" type="text/javascript"></script>
<script src="/javascript/jquery.tabs.js" type="text/javascript"></script>
<script src="/javascript/gollum.js" type="text/javascript"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-5109366-14']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div id="main">
<div class="site">
<div id="guides">
<div class="guide">
<div class="main">
<div class="actions">
<a href="http://railsapps.github.com/"><img src="http://railsapps.github.com/images/rails-36x36.jpg" title="Home" alt="Home"></a>
<a href="http://railsapps.github.com/">Rails Apps</a>
<a href="https://github.com/RailsApps">GitHub Repository</a>
</div><!-- class="actions" -->
<h1>Using Haml with Rails</h1>
<div class="content wikistyle gollum textile">
<h1>Using Haml with Rails</h1>
<p>This is a guide for developers using the example apps from the <a href="http://railsapps.github.com/">Rails Apps</a> repository. Others may find it helpful as well.</p>
<blockquote>
<p><ins>If you are creating an application template, this step uses the <a href="https://github.com/RailsApps/rails_apps_composer/raw/master/recipes/haml.rb">haml</a> recipe from the <a href="https://github.com/RailsApps/rails_apps_composer">rails_apps_composer</a> repository.</ins></p>
</blockquote>
<h2>Background</h2>
<p><a href="http://haml-lang.com/">Haml</a> is a popular alternative to the default Rails templating language (“<span class="caps">ERB</span>”).</p>
<p><a href="http://en.wikipedia.org/wiki/ERuby"><span class="caps">ERB</span></a> is a templating system that embeds Ruby into an <span class="caps">HTML</span> document, similar to <span class="caps">ASP</span>, <span class="caps">JSP</span> and <span class="caps">PHP</span>. It preserves the syntax of <span class="caps">HTML</span> and allows Ruby code to be embedded within a pair of <code><%</code> and <code>%></code> delimiters.</p>
<p>Haml is intended for “elegant” markup, elminating the repetitive tags of <span class="caps">HTML</span> and integrating conditional logic succinctly. It’s easier to read.</p>
<p>Indentation is significant in Haml, which makes for well-structured code, but errors in nesting can be an challenging aspect of using Haml.</p>
<h2>Setting Up Haml</h2>
<p>Here are instructions for adding Haml to Rails.</p>
<p>The example apps from the <a href="http://railsapps.github.com/">Rails Apps</a> repository use the default “<span class="caps">ERB</span>” Rails template engine. Optionally, you can use another template engine, such as Haml. You’ll need extra gems in the <strong>Gemfile</strong> for Haml:</p>
<pre>
gem 'haml-rails', '>= 0.3.4', :group => :development
</pre>
<p>Run the gem bundler command:</p>
<pre>
$ bundle install
</pre>
<p>With the haml-rails gem, there is no need to modify the <strong>application.rb</strong> file to accommodate Haml. Any time you generate a controller or scaffold, you’ll get Haml instead of <span class="caps">ERB</span> templates. And when your Rails application loads, Haml will be loaded and initialized.</p>
<h2>Haml Tools</h2>
<p>Most Rails example code and tutorials use <span class="caps">ERB</span>. But it’s very easy to convert <span class="caps">ERB</span> to Haml using the <a href="http://html2haml.heroku.com/">Html2Haml</a> website. Paste your <span class="caps">HTML</span> or <span class="caps">ERB</span> code into a text field, click convert, and you’ll have clean Haml code, ready to paste in your app views.</p>
</div><!-- class="content" -->
<div class="comments">
<div class="content wikistyle gollum">
<h2>Comments</h2>
</div>
<p>Is this helpful? Please "like" below. Question or suggestion? Please add a comment below. Got a correction or addition? You can edit this page <a href="https://github.com/railsapps/railsapps.github.com/wiki/_pages">on the wiki</a> or create a <a href="https://github.com/RailsApps/railsapps.github.com/issues">GitHub issue</a> to alert me.</p>
<div id="disqus_thread"></div>
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'railsapps'; // required: replace example with your forum shortname
// The following are highly recommended additional parameters.
// var disqus_identifier = 'rails-haml.html';
// var disqus_url = 'http://railsapps.github.com/rails-haml.html';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div><!-- class="comments" -->
<br />
<br />
<div class="credits">
<div class="content wikistyle gollum">
<h2>Credits</h2>
</div>
<p>Daniel Kehoe (<a href="http://danielkehoe.com/">http://danielkehoe.com/</a>) initiated the project and wrote some examples and tutorials.</p>
<p>Your contributions are welcome!</p>
</div><!-- class="credits" -->
<div class="admin">
<small>Corrections? Additions? You can edit this page <a href="https://github.com/railsapps/railsapps.github.com/wiki/_pages">on the wiki</a>.</small>
<div style="float: right;">
<small>Last edited by <b>Daniel Kehoe</b>, 2011-09-01 12:24:10</small>
</div>
</div><!-- class="admin" -->
</div><!-- class="main" -->
</div><!-- class="guide" -->
</div><!-- id="guides" -->
</div><!-- class="site" -->
</div><!-- id="main" -->
<!-- MixPanel analytics -->
<script type='text/javascript'> var mp_protocol = (('https:' == document.location.protocol) ? 'https://' : 'http://'); document.write(unescape('%3Cscript src="' + mp_protocol + 'api.mixpanel.com/site_media/js/api/mixpanel.js" type="text/javascript"%3E%3C/script%3E')); </script> <script type='text/javascript'> try { var mpmetrics = new MixpanelLib('b1cf97418f8c5b129847e8a52edbae68'); } catch(err) { null_fn = function () {}; var mpmetrics = { track: null_fn, track_funnel: null_fn, register: null_fn, register_once: null_fn, register_funnel: null_fn }; } </script>
<!-- Clicky analytics -->
<script src="//static.getclicky.com/js" type="text/javascript"></script>
<script type="text/javascript">try{ clicky.init(66423523); }catch(e){}</script>
<noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/66423523ns.gif" /></p></noscript>
</body>
</html>