<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>ProgramGood.Net - Ruby on Rails</title>
    <link>http://www.programgood.net/</link>
    <description>The journey to becoming a great programmer</description>
    <language>en-us</language>
    <copyright>Dave Mateer</copyright>
    <lastBuildDate>Wed, 07 Apr 2010 21:47:42 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>davemateer@gmail.com</managingEditor>
    <webMaster>davemateer@gmail.com</webMaster>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=2032c9ce-b531-42b1-907e-c12fef258044</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,2032c9ce-b531-42b1-907e-c12fef258044.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,2032c9ce-b531-42b1-907e-c12fef258044.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=2032c9ce-b531-42b1-907e-c12fef258044</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The last week of looking at RoR:
</p>
        <ul>
          <li>
Does all the plumbing if you follow the convention</li>
          <li>
Amazing how little code you need to write</li>
          <li>
The important stuff for CRUD apps is all there – validators, db relationships, CRUD
functionality</li>
          <li>
The ORM works</li>
          <li>
Fast to develop!</li>
        </ul>
        <p>
In summary this look like a wonderful technology for putting together CRUD based business
apps fast.
</p>
        <p>
Shared hosting seems to be harder than .NET / PHP, however heroku.com is a great free
resource.
</p>
        <p>
Commercially speaking I think it would work very well in an enterprise where there
is a need to develop apps fast (when isn’t there!) that do not require huge performance
(I would argue that most apps I’ve worked on would be well suited in RoR).
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=2032c9ce-b531-42b1-907e-c12fef258044" />
      </body>
      <title>RoR Thoughts so Far</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,2032c9ce-b531-42b1-907e-c12fef258044.aspx</guid>
      <link>http://www.programgood.net/2010/04/07/RoRThoughtsSoFar.aspx</link>
      <pubDate>Wed, 07 Apr 2010 21:47:42 GMT</pubDate>
      <description>&lt;p&gt;
The last week of looking at RoR:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Does all the plumbing if you follow the convention&lt;/li&gt;
&lt;li&gt;
Amazing how little code you need to write&lt;/li&gt;
&lt;li&gt;
The important stuff for CRUD apps is all there – validators, db relationships, CRUD
functionality&lt;/li&gt;
&lt;li&gt;
The ORM works&lt;/li&gt;
&lt;li&gt;
Fast to develop!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In summary this look like a wonderful technology for putting together CRUD based business
apps fast.
&lt;/p&gt;
&lt;p&gt;
Shared hosting seems to be harder than .NET / PHP, however heroku.com is a great free
resource.
&lt;/p&gt;
&lt;p&gt;
Commercially speaking I think it would work very well in an enterprise where there
is a need to develop apps fast (when isn’t there!) that do not require huge performance
(I would argue that most apps I’ve worked on would be well suited in RoR).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=2032c9ce-b531-42b1-907e-c12fef258044" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,2032c9ce-b531-42b1-907e-c12fef258044.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
ruby script/generate scaffold flight departure:datetime arrival:datetime destination:string
baggage_allowance:decimal capacity:integer
</p>
        <p>
ruby script/generate scaffold seat flight_id:integer name:string baggage:decimal
</p>
        <p>
rake db:migrate
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb.png" width="644" height="241" />
          </a>
        </p>
        <p>
 
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_1.png" width="338" height="484" />
          </a>
        </p>
        <p>
What we want is a form that has the flight info on it, then the ability to add a new
seat booking.
</p>
        <h5>Partials
</h5>
        <p>
Coppied seat/new.html.erb  into flight/show.html.erb file rendering as a partial
</p>
        <p>
_new_seat.html.erb
</p>
        <p>
Changed:
</p>
        <blockquote>
          <p>
&lt;% form_for(seat) do |f| %&gt; 
<br />
  &lt;%= f.error_messages %&gt; 
</p>
          <p>
  &lt;p&gt; 
<br />
    &lt;%= f.label :flight_id %&gt;&lt;br /&gt; 
<br />
    &lt;%= f.text_field :flight_id %&gt; 
<br />
  &lt;/p&gt; 
<br />
  &lt;p&gt; 
<br />
    &lt;%= f.label :name %&gt;&lt;br /&gt; 
<br />
    &lt;%= f.text_field :name %&gt; 
<br />
  &lt;/p&gt; 
<br />
  &lt;p&gt; 
<br />
    &lt;%= f.label :baggage %&gt;&lt;br /&gt; 
<br />
    &lt;%= f.text_field :baggage %&gt; 
<br />
  &lt;/p&gt; 
<br />
  &lt;p&gt; 
<br />
    &lt;%= f.submit 'Create' %&gt; 
<br />
  &lt;/p&gt; 
<br />
&lt;% end %&gt;
</p>
        </blockquote>
        <p>
the form_for(@seat) to (seat) to become a local variable to the partial.  This
is good practise.
</p>
        <p>
called the partial from flights/show.html.erb as
</p>
        <blockquote>
          <p>
&lt;%= render :partial=&gt;"new_seat", :locals=&gt;{:seat=&gt;Seat.new(:flight_id=&gt;@flight.id)}%&gt;
</p>
          <p>
&lt;% form_for(seat) do |f| %&gt; 
<br />
  &lt;%= f.error_messages %&gt; 
<br />
  &lt;%= f.hidden_field :flight_id %&gt;
</p>
        </blockquote>
        <p>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_3.png" width="439" height="484" />
          </a>
        </p>
        <p>
We also need a partial for the seat list
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_4.png" width="233" height="484" />
          </a>
        </p>
        <p>
however this is bad as its displaying the seats for all flights
</p>
        <h5>Connect the models together
</h5>
        <p>
means we don’t need to use finders.. it works automatically.
</p>
        <blockquote>
          <p>
class Flight &lt; ActiveRecord::Base 
<br />
  has_many :seats 
<br />
end
</p>
        </blockquote>
        <p>
        </p>
        <p>
then when rendering out the listing of seats we can pass in the array  in show.html.erb
</p>
        <blockquote>
          <p>
&lt;%= render :partial=&gt;"seat_list", :locals=&gt;{:seats=&gt; @flight.seats}%&gt;
</p>
        </blockquote>
        <p>
in the model:
</p>
        <blockquote>
          <p>
belongs_to :flight 
<br />
    def validate 
<br />
        if baggage &gt; Flight.find(flight_id).baggage_allowance 
<br />
            errors.add_to_base("You
have too much baggage") 
<br />
        end 
<br />
        if flight.seats.size &gt;= flight.capacity 
<br />
            errors.add_to_base("The
flight is fully booked") 
<br />
        end 
<br />
    end
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_5.png" width="244" height="209" />
          </a>
        </p>
        <p>
another custom validator in the seat model
</p>
        <p>
if flight.seats.size &gt;= flight.capacity 
<br />
            errors.add_to_base("The
flight is fully booked") 
<br />
        end
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_6.png" width="204" height="244" />
          </a>
        </p>
        <p>
**TO DO put in a validator that checks there is a number for baggage
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8" />
      </body>
      <title>RoR Multiple Tables</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8.aspx</guid>
      <link>http://www.programgood.net/2010/04/07/RoRMultipleTables.aspx</link>
      <pubDate>Wed, 07 Apr 2010 04:40:27 GMT</pubDate>
      <description>&lt;p&gt;
ruby script/generate scaffold flight departure:datetime arrival:datetime destination:string
baggage_allowance:decimal capacity:integer
&lt;/p&gt;
&lt;p&gt;
ruby script/generate scaffold seat flight_id:integer name:string baggage:decimal
&lt;/p&gt;
&lt;p&gt;
rake db:migrate
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb.png" width="644" height="241" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_1.png" width="338" height="484" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
What we want is a form that has the flight info on it, then the ability to add a new
seat booking.
&lt;/p&gt;
&lt;h5&gt;Partials
&lt;/h5&gt;
&lt;p&gt;
Coppied seat/new.html.erb&amp;#160; into flight/show.html.erb file rendering as a partial
&lt;/p&gt;
&lt;p&gt;
_new_seat.html.erb
&lt;/p&gt;
&lt;p&gt;
Changed:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_for(seat) do |f| %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;%= f.error_messages %&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160; &amp;lt;p&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.label :flight_id %&amp;gt;&amp;lt;br /&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.text_field :flight_id %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.label :name %&amp;gt;&amp;lt;br /&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.text_field :name %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.label :baggage %&amp;gt;&amp;lt;br /&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.text_field :baggage %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= f.submit 'Create' %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
the form_for(@seat) to (seat) to become a local variable to the partial.&amp;#160; This
is good practise.
&lt;/p&gt;
&lt;p&gt;
called the partial from flights/show.html.erb as
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;%= render :partial=&amp;gt;&amp;quot;new_seat&amp;quot;, :locals=&amp;gt;{:seat=&amp;gt;Seat.new(:flight_id=&amp;gt;@flight.id)}%&amp;gt;
&lt;/p&gt;
&lt;p&gt;
&amp;lt;% form_for(seat) do |f| %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;%= f.error_messages %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;%= f.hidden_field :flight_id %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_3.png" width="439" height="484" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
We also need a partial for the seat list
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_4.png" width="233" height="484" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
however this is bad as its displaying the seats for all flights
&lt;/p&gt;
&lt;h5&gt;Connect the models together
&lt;/h5&gt;
&lt;p&gt;
means we don’t need to use finders.. it works automatically.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
class Flight &amp;lt; ActiveRecord::Base 
&lt;br /&gt;
&amp;#160; has_many :seats 
&lt;br /&gt;
end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
then when rendering out the listing of seats we can pass in the array&amp;#160; in show.html.erb
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;%= render :partial=&amp;gt;&amp;quot;seat_list&amp;quot;, :locals=&amp;gt;{:seats=&amp;gt; @flight.seats}%&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
in the model:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
belongs_to :flight 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; def validate 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if baggage &amp;gt; Flight.find(flight_id).baggage_allowance 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; errors.add_to_base(&amp;quot;You
have too much baggage&amp;quot;) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; end 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if flight.seats.size &amp;gt;= flight.capacity 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; errors.add_to_base(&amp;quot;The
flight is fully booked&amp;quot;) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; end 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_5.png" width="244" height="209" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
another custom validator in the seat model
&lt;/p&gt;
&lt;p&gt;
if flight.seats.size &amp;gt;= flight.capacity 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; errors.add_to_base(&amp;quot;The
flight is fully booked&amp;quot;) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; end
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRMultipleTables_DF0B/image_thumb_6.png" width="204" height="244" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
**TO DO put in a validator that checks there is a number for baggage
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,055e56a8-f5a1-45f5-b2ad-ff112a2a2ab8.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=3f1ef77f-5fb5-40a5-81ee-045e3cbc9991</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,3f1ef77f-5fb5-40a5-81ee-045e3cbc9991.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,3f1ef77f-5fb5-40a5-81ee-045e3cbc9991.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3f1ef77f-5fb5-40a5-81ee-045e3cbc9991</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
ruby script/generate scaffold client_workout client_name:string trainer:string duration_mins:integer
date_of_workout:date paid_amount:decimal
</p>
        <p>
rake db:migrate
</p>
        <p>
Problem is that the scaffolding app doesn’t do exactly what we want.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb.png" width="631" height="397" />
          </a>
        </p>
        <p>
what we want is just the listing for Lenny Goldberg ie a filter.
</p>
        <h5>Creating a Form with no Model
</h5>
        <p>
instead of form_for
</p>
        <blockquote>
          <p>
&lt;% form_for(@ad,:url=&gt;{:action=&gt;'update'}) do |f| %&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Name&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :name %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_area :description
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Price&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :price %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Seller&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :seller_id
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Email&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :email %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Img url&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :img_url
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;%= f.submit "Update" %&gt;&lt;/p&gt; 
<br />
&lt;% end %&gt;
</p>
        </blockquote>
        <p>
we use form_tag
</p>
        <blockquote>
          <p>
&lt;% form_tag "/client_workouts/find" do%&gt; 
<br />
      &lt;%= text_field_tag :search_string%&gt; 
<br />
      &lt;%= submit_tag "Search" %&gt; 
<br />
    &lt;% end %&gt;
</p>
        </blockquote>
        <p>
 
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_2.png" width="644" height="164" />
          </a>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_1.png" width="689" height="177" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
by putting in dave into the search box, we can see it coming through in the controller
by using puts to output to the console.
</p>
        <p>
So we only need those records where client_name = the search string.
</p>
        <blockquote>
          <p>
def find 
<br />
      puts params[:search_string] 
<br />
      @client_workouts = ClientWorkout.find_all_by_client_name(params[:search_string]) 
<br />
  end
</p>
        </blockquote>
        <p>
The framework creates finders for each attribute.. eg find_all_by_client_name.
</p>
        <p>
and I just wired up to a find.html.erb file.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_3.png" width="655" height="406" />
          </a>
        </p>
        <p>
however we want to search on trainer as well ie where client_name=”Lenny Goldbery”
or trainer = “Lenny Goldberg”
</p>
        <blockquote>
          <p>
@client_workouts = ClientWorkout.find(:all, :conditions=&gt;["client_name = ?
OR trainer = ?", 
<br />
                         
params[:search_string], params[:search_string]])
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_4.png" width="537" height="351" />
          </a>
        </p>
        <p>
The crowd goes wild!  Can filter on client_name or trainer.
</p>
        <h3>Validators
</h3>
        <p>
A number:
</p>
        <blockquote>
          <p>
class ClientWorkout &lt; ActiveRecord::Base 
<br />
    validates_numericality_of :paid_amount 
<br />
end
</p>
        </blockquote>
        <p>
Mandatory:
</p>
        <blockquote>
          <p>
class ClientWorkout &lt; ActiveRecord::Base 
<br />
    validates_numericality_of :paid_amount 
<br />
    validates_presence_of :trainer 
<br />
    validates_presence_of :client_name 
<br />
end
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_5.png" width="291" height="484" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Doing it on custom code:
</p>
        <blockquote>
          <p>
class Ad &lt; ActiveRecord::Base 
<br />
  validates_presence_of :price 
<br />
  validates_presence_of :name 
<br />
end
</p>
          <p>
def create 
<br />
      @ad = Ad.new(params[:ad]) 
<br />
      if @ad.save 
<br />
        redirect_to "/ads/#{@ad.id}" 
<br />
      else 
<br />
        render :template =&gt; "ads/new" 
<br />
      end 
<br />
  end
</p>
          <p>
&lt;% form_for(@ad,:url=&gt;{:action=&gt;'create'}) do |f| %&gt; 
<br />
    &lt;%=f.error_messages%&gt;
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_6.png" width="780" height="508" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=3f1ef77f-5fb5-40a5-81ee-045e3cbc9991" />
      </body>
      <title>RoR – Database Finders – Fix The Scaffold</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,3f1ef77f-5fb5-40a5-81ee-045e3cbc9991.aspx</guid>
      <link>http://www.programgood.net/2010/04/07/RoRDatabaseFindersFixTheScaffold.aspx</link>
      <pubDate>Wed, 07 Apr 2010 03:50:05 GMT</pubDate>
      <description>&lt;p&gt;
ruby script/generate scaffold client_workout client_name:string trainer:string duration_mins:integer
date_of_workout:date paid_amount:decimal
&lt;/p&gt;
&lt;p&gt;
rake db:migrate
&lt;/p&gt;
&lt;p&gt;
Problem is that the scaffolding app doesn’t do exactly what we want.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb.png" width="631" height="397" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
what we want is just the listing for Lenny Goldberg ie a filter.
&lt;/p&gt;
&lt;h5&gt;Creating a Form with no Model
&lt;/h5&gt;
&lt;p&gt;
instead of form_for
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_for(@ad,:url=&amp;gt;{:action=&amp;gt;'update'}) do |f| %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :name %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_area :description
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Price&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :price %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Seller&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :seller_id
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Email&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :email %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Img url&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :img_url
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;%= f.submit &amp;quot;Update&amp;quot; %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
we use form_tag
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_tag &amp;quot;/client_workouts/find&amp;quot; do%&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= text_field_tag :search_string%&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;%= submit_tag &amp;quot;Search&amp;quot; %&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_2.png" width="644" height="164" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_1.png" width="689" height="177" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
by putting in dave into the search box, we can see it coming through in the controller
by using puts to output to the console.
&lt;/p&gt;
&lt;p&gt;
So we only need those records where client_name = the search string.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
def find 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; puts params[:search_string] 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @client_workouts = ClientWorkout.find_all_by_client_name(params[:search_string]) 
&lt;br /&gt;
&amp;#160; end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The framework creates finders for each attribute.. eg find_all_by_client_name.
&lt;/p&gt;
&lt;p&gt;
and I just wired up to a find.html.erb file.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_3.png" width="655" height="406" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
however we want to search on trainer as well ie where client_name=”Lenny Goldbery”
or trainer = “Lenny Goldberg”
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
@client_workouts = ClientWorkout.find(:all, :conditions=&amp;gt;[&amp;quot;client_name = ?
OR trainer = ?&amp;quot;, 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;
params[:search_string], params[:search_string]])
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_4.png" width="537" height="351" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The crowd goes wild!&amp;#160; Can filter on client_name or trainer.
&lt;/p&gt;
&lt;h3&gt;Validators
&lt;/h3&gt;
&lt;p&gt;
A number:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
class ClientWorkout &amp;lt; ActiveRecord::Base 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; validates_numericality_of :paid_amount 
&lt;br /&gt;
end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Mandatory:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
class ClientWorkout &amp;lt; ActiveRecord::Base 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; validates_numericality_of :paid_amount 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; validates_presence_of :trainer 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; validates_presence_of :client_name 
&lt;br /&gt;
end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_5.png" width="291" height="484" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Doing it on custom code:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
class Ad &amp;lt; ActiveRecord::Base 
&lt;br /&gt;
&amp;#160; validates_presence_of :price 
&lt;br /&gt;
&amp;#160; validates_presence_of :name 
&lt;br /&gt;
end
&lt;/p&gt;
&lt;p&gt;
def create 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad = Ad.new(params[:ad]) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if @ad.save 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; redirect_to &amp;quot;/ads/#{@ad.id}&amp;quot; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; render :template =&amp;gt; &amp;quot;ads/new&amp;quot; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; end 
&lt;br /&gt;
&amp;#160; end
&lt;/p&gt;
&lt;p&gt;
&amp;lt;% form_for(@ad,:url=&amp;gt;{:action=&amp;gt;'create'}) do |f| %&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;%=f.error_messages%&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RoRDatabaseFinders_CE0F/image_thumb_6.png" width="780" height="508" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=3f1ef77f-5fb5-40a5-81ee-045e3cbc9991" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,3f1ef77f-5fb5-40a5-81ee-045e3cbc9991.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=a3856a95-713b-4268-824a-af2d2a1fa29a</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,a3856a95-713b-4268-824a-af2d2a1fa29a.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,a3856a95-713b-4268-824a-af2d2a1fa29a.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=a3856a95-713b-4268-824a-af2d2a1fa29a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
here is how we do it from scaffolding:
</p>
        <h3>Symbols and Strings
</h3>
        <p>
&lt;%= f.label :seat_id_seq %&gt;   This is a symbol.  They always
start with a colon.  Generally used to name things.  Mostly interchangeable
with strings.
</p>
        <p>
&lt;%= f.label “Seat #” %&gt;   This is a string.
</p>
        <h3>Add a column to the DB
</h3>
        <p>
to add the database we:
</p>
        <p>
ruby script/generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal
email_address:string
</p>
        <p>
to add a row:
</p>
        <p>
ruby script/generate migration AddPhoneToTickets phone:string
</p>
        <p>
important bit is Add…To…
</p>
        <p>
then 
</p>
        <p>
rake db:migrate
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb.png" width="644" height="240" />
          </a>
        </p>
        <p>
then changed the 4 view to display the new field.
</p>
        <h3>Starting From Scratch
</h3>
        <p>
The scaffolding can create too much code!  Here is an app just generating 1 page
to start with (a show page)
</p>
        <p>
ruby script/generate model ad name:string description:text price:decimal seller_id:integer
email:string img_url:string
</p>
        <p>
models have singular names eg ticket, ad
</p>
        <h5>Controller
</h5>
        <p>
ruby script/generate controller ads
</p>
        <p>
controllers have plural names
</p>
        <h5>Routes
</h5>
        <p>
map.connect '/ads/:id', :controller=&gt;'ads', :action=&gt;'show'
</p>
        <p>
use the ads_controller.rb, and the show template.
</p>
        <h5>View
</h5>
        <p>
show.html.erb
</p>
        <blockquote>
          <p>
&lt;p&gt; 
<br />
    &lt;b&gt;Name:&lt;/b&gt;&lt;%= @ad.name %&gt; 
<br />
&lt;/p&gt;
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_4.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_1.png" width="644" height="465" />
          </a>
        </p>
        <h5>Index Page
</h5>
        <p>
controller:
</p>
        <blockquote>
          <p>
  def index 
<br />
    @ads = Ad.find(:all) 
<br />
  end
</p>
        </blockquote>
        <p>
index.html.erb
</p>
        <blockquote>
          <p>
&lt;% for ad in @ads%&gt; 
<br />
    &lt;li&gt;&lt;a href="/ads/&lt;%= ad.id%&gt;"&gt;&lt;%=ad.name%&gt;&lt;/a&gt;&lt;/li&gt; 
<br />
&lt;% end %&gt; 
<br /></p>
        </blockquote>
        <p>
route
</p>
        <blockquote>
          <p>
map.connect 'ads/', :controller=&gt;'ads', :action=&gt;'index'
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_6.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_2.png" width="174" height="366" />
          </a>
        </p>
        <h5>Layouts
</h5>
        <p>
images into public/images
</p>
        <p>
stylesheet into public/stylesheets
</p>
        <p>
apps/views/layouts/ads.html.erb
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_8.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_3.png" width="589" height="484" />
          </a>
        </p>
        <h5>Post New Ads Online
</h5>
        <p>
        </p>
        <h5>routes
</h5>
        <blockquote>
          <p>
map.connect 'ads/new', :controller=&gt;'ads', :action=&gt;'new' 
<br />
map.connect 'ads/create', :controller=&gt;'ads', :action=&gt;'create'
</p>
        </blockquote>
        <h5>viewff
</h5>
        <p>
 
</p>
        <p>
ads/new.html.erb
</p>
        <p>
and the form will be submitted to:
</p>
        <p>
ads/create
</p>
        <p>
 
</p>
        <h5>RoR Text Editor
</h5>
        <p>
Am trying <a title="http://www.e-texteditor.com/" href="http://www.e-texteditor.com/">http://www.e-texteditor.com/</a></p>
        <p>
ctrl shift p – toggle between project view and editor view
</p>
        <p>
          <a title="http://www.e-texteditor.com/wiki/index.php/Projects#Keyboard_navigation" href="http://www.e-texteditor.com/wiki/index.php/Projects#Keyboard_navigation">http://www.e-texteditor.com/wiki/index.php/Projects#Keyboard_navigation</a> –
keyboard shortcuts
</p>
        <h5>Create Form Helper
</h5>
        <p>
Rails can create forms that are associated with model objects. so in new.html.erb
</p>
        <blockquote>
          <p>
&lt;% form_for(@ad,:url=&gt;{:action=&gt;'create'}) do |f| %&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Name&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :name %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_area :description
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Price&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :price %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Seller&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :seller_id
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Email&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :email %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Img url&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :img_url
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;%= f.submit "Create" %&gt;&lt;/p&gt; 
<br />
&lt;% end %&gt;
</p>
        </blockquote>
        <p>
eg this comes out as:
</p>
        <blockquote>
          <pre>&lt;b&gt;Name&lt;/b&gt;&lt;br /&gt;&lt;input id="ad_name" name="ad[name]" size="30" type="text" /&gt;</pre>
        </blockquote>
        <pre>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_10.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_4.png" width="319" height="484" />
          </a>
        </pre>
        <p>
so when the submit button is pressed, this routes back to the create action in the
AdsController.
</p>
        <h5>Controller
</h5>
        <blockquote>
          <p>
def new 
<br />
      @ad = Ad.new    
<br />
  end
</p>
          <p>
            <br />
  def create 
<br />
      @ad = Ad.new(params[:ad]) 
<br />
      @ad.save 
<br />
      redirect_to "/ads/#{@ad.id}" 
<br />
  end
</p>
        </blockquote>
        <p>
note:  create an empty ad object before passing onto new
</p>
        <p>
and we have an automatic redirect to the listing
</p>
        <p>
otherwise could have commented out and it would go automatically to create.html.erb:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_12.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_5.png" width="243" height="244" />
          </a>
        </p>
        <h5>Edit a Record
</h5>
        <p>
routes add in 
</p>
        <blockquote>
          <p>
map.connect 'ads/:id/edit', :controller=&gt;'ads', :action=&gt;'edit' 
<br />
map.connect 'ads/:id/update', :controller=&gt;'ads', :action=&gt;'update'
</p>
        </blockquote>
        <p>
controller add in
</p>
        <blockquote>
          <p>
def edit 
<br />
      @ad = Ad.find(params[:id]) 
<br />
  end 
<br />
  def update 
<br />
      @ad = Ad.find(params[:id]) 
<br />
      @ad.update_attributes(params[:ad]) 
<br />
      redirect_to"/ads/#{@ad.id}" 
<br />
  end
</p>
        </blockquote>
        <p>
view add in
</p>
        <blockquote>
          <p>
&lt;% form_for(@ad,:url=&gt;{:action=&gt;'update'}) do |f| %&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Name&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :name %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Description&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_area :description
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Price&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :price %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Seller&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :seller_id
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Email&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :email %&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;b&gt;Img url&lt;/b&gt;&lt;br /&gt;&lt;%= f.text_field :img_url
%&gt;&lt;/p&gt; 
<br />
  &lt;p&gt;&lt;%= f.submit "Update" %&gt;&lt;/p&gt; 
<br />
&lt;% end %&gt;
</p>
        </blockquote>
        <h5>Security
</h5>
        <p>
in the AdsController
</p>
        <blockquote>
          <p>
before_filter :check_logged_in, :only =&gt; [:edit, :update]
</p>
          <p>
  private 
<br />
    def check_logged_in 
<br />
        authenticate_or_request_with_http_basic("Ads")
do |username, password| 
<br />
            username == "admin"
&amp;&amp; password == "secret" 
<br />
        end 
<br />
    end
</p>
        </blockquote>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_14.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_6.png" width="684" height="280" />
          </a>
        </p>
        <p>
 
</p>
        <h5>Delete
</h5>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_16.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_7.png" width="176" height="244" />
          </a>
        </p>
        <p>
Just calling a single action on the controller called destory which then redirects
back to index.
</p>
        <p>
 
</p>
        <p>
**TODO put this live
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=a3856a95-713b-4268-824a-af2d2a1fa29a" />
      </body>
      <title>Head First Rails – Creating an App From Scratch</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,a3856a95-713b-4268-824a-af2d2a1fa29a.aspx</guid>
      <link>http://www.programgood.net/2010/04/07/HeadFirstRailsCreatingAnAppFromScratch.aspx</link>
      <pubDate>Wed, 07 Apr 2010 02:11:31 GMT</pubDate>
      <description>&lt;p&gt;
here is how we do it from scaffolding:
&lt;/p&gt;
&lt;h3&gt;Symbols and Strings
&lt;/h3&gt;
&lt;p&gt;
&amp;lt;%= f.label :seat_id_seq %&amp;gt;&amp;#160;&amp;#160; This is a symbol.&amp;#160; They always
start with a colon.&amp;#160; Generally used to name things.&amp;#160; Mostly interchangeable
with strings.
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%= f.label “Seat #” %&amp;gt;&amp;#160;&amp;#160; This is a string.
&lt;/p&gt;
&lt;h3&gt;Add a column to the DB
&lt;/h3&gt;
&lt;p&gt;
to add the database we:
&lt;/p&gt;
&lt;p&gt;
ruby script/generate scaffold ticket name:string seat_id_seq:string address:text price_paid:decimal
email_address:string
&lt;/p&gt;
&lt;p&gt;
to add a row:
&lt;/p&gt;
&lt;p&gt;
ruby script/generate migration AddPhoneToTickets phone:string
&lt;/p&gt;
&lt;p&gt;
important bit is Add…To…
&lt;/p&gt;
&lt;p&gt;
then 
&lt;/p&gt;
&lt;p&gt;
rake db:migrate
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb.png" width="644" height="240" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
then changed the 4 view to display the new field.
&lt;/p&gt;
&lt;h3&gt;Starting From Scratch
&lt;/h3&gt;
&lt;p&gt;
The scaffolding can create too much code!&amp;#160; Here is an app just generating 1 page
to start with (a show page)
&lt;/p&gt;
&lt;p&gt;
ruby script/generate model ad name:string description:text price:decimal seller_id:integer
email:string img_url:string
&lt;/p&gt;
&lt;p&gt;
models have singular names eg ticket, ad
&lt;/p&gt;
&lt;h5&gt;Controller
&lt;/h5&gt;
&lt;p&gt;
ruby script/generate controller ads
&lt;/p&gt;
&lt;p&gt;
controllers have plural names
&lt;/p&gt;
&lt;h5&gt;Routes
&lt;/h5&gt;
&lt;p&gt;
map.connect '/ads/:id', :controller=&amp;gt;'ads', :action=&amp;gt;'show'
&lt;/p&gt;
&lt;p&gt;
use the ads_controller.rb, and the show template.
&lt;/p&gt;
&lt;h5&gt;View
&lt;/h5&gt;
&lt;p&gt;
show.html.erb
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;p&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;b&amp;gt;Name:&amp;lt;/b&amp;gt;&amp;lt;%= @ad.name %&amp;gt; 
&lt;br /&gt;
&amp;lt;/p&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_1.png" width="644" height="465" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h5&gt;Index Page
&lt;/h5&gt;
&lt;p&gt;
controller:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;#160; def index 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; @ads = Ad.find(:all) 
&lt;br /&gt;
&amp;#160; end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
index.html.erb
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% for ad in @ads%&amp;gt; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/ads/&amp;lt;%= ad.id%&amp;gt;&amp;quot;&amp;gt;&amp;lt;%=ad.name%&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt; 
&lt;br /&gt;
&amp;lt;% end %&amp;gt; 
&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
route
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
map.connect 'ads/', :controller=&amp;gt;'ads', :action=&amp;gt;'index'
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_2.png" width="174" height="366" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h5&gt;Layouts
&lt;/h5&gt;
&lt;p&gt;
images into public/images
&lt;/p&gt;
&lt;p&gt;
stylesheet into public/stylesheets
&lt;/p&gt;
&lt;p&gt;
apps/views/layouts/ads.html.erb
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_3.png" width="589" height="484" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h5&gt;Post New Ads Online
&lt;/h5&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h5&gt;routes
&lt;/h5&gt;
&lt;blockquote&gt; 
&lt;p&gt;
map.connect 'ads/new', :controller=&amp;gt;'ads', :action=&amp;gt;'new' 
&lt;br /&gt;
map.connect 'ads/create', :controller=&amp;gt;'ads', :action=&amp;gt;'create'
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;h5&gt;viewff
&lt;/h5&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
ads/new.html.erb
&lt;/p&gt;
&lt;p&gt;
and the form will be submitted to:
&lt;/p&gt;
&lt;p&gt;
ads/create
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h5&gt;RoR Text Editor
&lt;/h5&gt;
&lt;p&gt;
Am trying &lt;a title="http://www.e-texteditor.com/" href="http://www.e-texteditor.com/"&gt;http://www.e-texteditor.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
ctrl shift p – toggle between project view and editor view
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://www.e-texteditor.com/wiki/index.php/Projects#Keyboard_navigation" href="http://www.e-texteditor.com/wiki/index.php/Projects#Keyboard_navigation"&gt;http://www.e-texteditor.com/wiki/index.php/Projects#Keyboard_navigation&lt;/a&gt; –
keyboard shortcuts
&lt;/p&gt;
&lt;h5&gt;Create Form Helper
&lt;/h5&gt;
&lt;p&gt;
Rails can create forms that are associated with model objects. so in new.html.erb
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_for(@ad,:url=&amp;gt;{:action=&amp;gt;'create'}) do |f| %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :name %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_area :description
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Price&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :price %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Seller&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :seller_id
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Email&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :email %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Img url&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :img_url
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;%= f.submit &amp;quot;Create&amp;quot; %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
eg this comes out as:
&lt;/p&gt;
&lt;blockquote&gt; &lt;pre&gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;input id=&amp;quot;ad_name&amp;quot; name=&amp;quot;ad[name]&amp;quot; size=&amp;quot;30&amp;quot; type=&amp;quot;text&amp;quot; /&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt; &lt;pre&gt;&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_4.png" width="319" height="484" /&gt;&lt;/a&gt; &lt;/pre&gt;
&lt;p&gt;
so when the submit button is pressed, this routes back to the create action in the
AdsController.
&lt;/p&gt;
&lt;h5&gt;Controller
&lt;/h5&gt;
&lt;blockquote&gt; 
&lt;p&gt;
def new 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad = Ad.new&amp;#160;&amp;#160;&amp;#160; 
&lt;br /&gt;
&amp;#160; end
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
&amp;#160; def create 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad = Ad.new(params[:ad]) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad.save 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; redirect_to &amp;quot;/ads/#{@ad.id}&amp;quot; 
&lt;br /&gt;
&amp;#160; end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
note:&amp;#160; create an empty ad object before passing onto new
&lt;/p&gt;
&lt;p&gt;
and we have an automatic redirect to the listing
&lt;/p&gt;
&lt;p&gt;
otherwise could have commented out and it would go automatically to create.html.erb:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_5.png" width="243" height="244" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h5&gt;Edit a Record
&lt;/h5&gt;
&lt;p&gt;
routes add in 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
map.connect 'ads/:id/edit', :controller=&amp;gt;'ads', :action=&amp;gt;'edit' 
&lt;br /&gt;
map.connect 'ads/:id/update', :controller=&amp;gt;'ads', :action=&amp;gt;'update'
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
controller add in
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
def edit 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad = Ad.find(params[:id]) 
&lt;br /&gt;
&amp;#160; end 
&lt;br /&gt;
&amp;#160; def update 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad = Ad.find(params[:id]) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; @ad.update_attributes(params[:ad]) 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; redirect_to&amp;quot;/ads/#{@ad.id}&amp;quot; 
&lt;br /&gt;
&amp;#160; end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
view add in
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_for(@ad,:url=&amp;gt;{:action=&amp;gt;'update'}) do |f| %&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Name&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :name %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Description&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_area :description
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Price&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :price %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Seller&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :seller_id
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Email&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :email %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Img url&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;%= f.text_field :img_url
%&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;#160; &amp;lt;p&amp;gt;&amp;lt;%= f.submit &amp;quot;Update&amp;quot; %&amp;gt;&amp;lt;/p&amp;gt; 
&lt;br /&gt;
&amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;h5&gt;Security
&lt;/h5&gt;
&lt;p&gt;
in the AdsController
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
before_filter :check_logged_in, :only =&amp;gt; [:edit, :update]
&lt;/p&gt;
&lt;p&gt;
&amp;#160; private 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; def check_logged_in 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; authenticate_or_request_with_http_basic(&amp;quot;Ads&amp;quot;)
do |username, password| 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; username == &amp;quot;admin&amp;quot;
&amp;amp;&amp;amp; password == &amp;quot;secret&amp;quot; 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; end 
&lt;br /&gt;
&amp;#160;&amp;#160;&amp;#160; end
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_6.png" width="684" height="280" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h5&gt;Delete
&lt;/h5&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_16.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HeadFirstRails_BD02/image_thumb_7.png" width="176" height="244" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Just calling a single action on the controller called destory which then redirects
back to index.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
**TODO put this live
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=a3856a95-713b-4268-824a-af2d2a1fa29a" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,a3856a95-713b-4268-824a-af2d2a1fa29a.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=5574ad48-7464-4122-9f6b-6e56c16a8875</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,5574ad48-7464-4122-9f6b-6e56c16a8875.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,5574ad48-7464-4122-9f6b-6e56c16a8875.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=5574ad48-7464-4122-9f6b-6e56c16a8875</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
elevator
</p>
        <p>
use cases
</p>
        <p>
paper prototype:
</p>
        <p>
put mock up live
</p>
        <blockquote>
          <p>
          </p>
        </blockquote>
        <p>
          <a title="http://pubtricks.heroku.com/" href="http://pubtricks.heroku.com/">http://pubtricks.heroku.com/</a>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/f25a319a9b88_103A8/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/f25a319a9b88_103A8/image_thumb.png" width="644" height="212" />
          </a>
        </p>
        <p>
changes to scaffold:
</p>
        <p>
background colour in all games in \views\layouts\games.html.erb
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=5574ad48-7464-4122-9f6b-6e56c16a8875" />
      </body>
      <title>Pub Tricks RoR Website</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,5574ad48-7464-4122-9f6b-6e56c16a8875.aspx</guid>
      <link>http://www.programgood.net/2010/04/01/PubTricksRoRWebsite.aspx</link>
      <pubDate>Thu, 01 Apr 2010 02:11:05 GMT</pubDate>
      <description>&lt;p&gt;
elevator
&lt;/p&gt;
&lt;p&gt;
use cases
&lt;/p&gt;
&lt;p&gt;
paper prototype:
&lt;/p&gt;
&lt;p&gt;
put mock up live
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a title="http://pubtricks.heroku.com/" href="http://pubtricks.heroku.com/"&gt;http://pubtricks.heroku.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/f25a319a9b88_103A8/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/f25a319a9b88_103A8/image_thumb.png" width="644" height="212" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
changes to scaffold:
&lt;/p&gt;
&lt;p&gt;
background colour in all games in \views\layouts\games.html.erb
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=5574ad48-7464-4122-9f6b-6e56c16a8875" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,5574ad48-7464-4122-9f6b-6e56c16a8875.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=1a5935ce-0055-4fe2-912c-f7baa884de4b</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,1a5935ce-0055-4fe2-912c-f7baa884de4b.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,1a5935ce-0055-4fe2-912c-f7baa884de4b.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1a5935ce-0055-4fe2-912c-f7baa884de4b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>
          <p>
 
</p>
        </h3>
        <p>
heroku - free 
<br />
dreamhost - 9us per month 
<br />
railsplayground - 5us per month 
<br />
slicehost - vps.. bout 20 per month
</p>
        <p>
gem install heroku
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_thumb.png" width="499" height="305" />
          </a>
        </p>
        <p>
create git repo
</p>
        <p>
heroku create
</p>
        <p>
  it then added ssh key to remote
</p>
        <p>
git remote – has added in the remote
</p>
        <p>
git push heroku master
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_thumb_1.png" width="644" height="320" />
          </a>
        </p>
        <p>
hmmm…
</p>
        <p>
tried:  heroku keys:add c:\id_rsa.pub
</p>
        <p>
remembered i’d put my key in 
</p>
        <p>
c:\home\.ssh\id_rsa.pub
</p>
        <p>
heroku rake db:migrate
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_thumb_2.png" width="644" height="320" />
          </a>
        </p>
        <p>
The crowd goes wild!
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=1a5935ce-0055-4fe2-912c-f7baa884de4b" />
      </body>
      <title>Hosting Ruby On Rails</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,1a5935ce-0055-4fe2-912c-f7baa884de4b.aspx</guid>
      <link>http://www.programgood.net/2010/03/31/HostingRubyOnRails.aspx</link>
      <pubDate>Wed, 31 Mar 2010 21:49:39 GMT</pubDate>
      <description>&lt;h3&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;/h3&gt;
&lt;p&gt;
heroku - free 
&lt;br /&gt;
dreamhost - 9us per month 
&lt;br /&gt;
railsplayground - 5us per month 
&lt;br /&gt;
slicehost - vps.. bout 20 per month
&lt;/p&gt;
&lt;p&gt;
gem install heroku
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_thumb.png" width="499" height="305" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
create git repo
&lt;/p&gt;
&lt;p&gt;
heroku create
&lt;/p&gt;
&lt;p&gt;
&amp;#160; it then added ssh key to remote
&lt;/p&gt;
&lt;p&gt;
git remote – has added in the remote
&lt;/p&gt;
&lt;p&gt;
git push heroku master
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_thumb_1.png" width="644" height="320" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
hmmm…
&lt;/p&gt;
&lt;p&gt;
tried:&amp;#160; heroku keys:add c:\id_rsa.pub
&lt;/p&gt;
&lt;p&gt;
remembered i’d put my key in 
&lt;/p&gt;
&lt;p&gt;
c:\home\.ssh\id_rsa.pub
&lt;/p&gt;
&lt;p&gt;
heroku rake db:migrate
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/HostingRubyOnRails_9747/image_thumb_2.png" width="644" height="320" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The crowd goes wild!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=1a5935ce-0055-4fe2-912c-f7baa884de4b" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,1a5935ce-0055-4fe2-912c-f7baa884de4b.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
    <item>
      <trackback:ping>http://www.programgood.net/Trackback.aspx?guid=10e5cb7d-7515-4b3e-b364-a3889ddd517b</trackback:ping>
      <pingback:server>http://www.programgood.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.programgood.net/PermaLink,guid,10e5cb7d-7515-4b3e-b364-a3889ddd517b.aspx</pingback:target>
      <dc:creator>Dave Mateer</dc:creator>
      <wfw:comment>http://www.programgood.net/CommentView,guid,10e5cb7d-7515-4b3e-b364-a3889ddd517b.aspx</wfw:comment>
      <wfw:commentRss>http://www.programgood.net/SyndicationService.asmx/GetEntryCommentsRss?guid=10e5cb7d-7515-4b3e-b364-a3889ddd517b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
After an awesome mountainbike ride I’ve managed to break my collar bone.  I wouldn’t
recommend this :-)
</p>
        <p>
So I though I’d make the most of the ‘opportunity’ and have a look at RoR..
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_10.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="516" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_4.png" width="388" border="0" />
          </a>
        </p>
        <p>
Goal:  To deploy an application live
</p>
        <h3>Downloading RoR
</h3>
        <p>
rubyonrail.org – download.  Getting 1.8.7 of Ruby.. tick add to executable, and
associate .rb
</p>
        <p>
rubygems – package manager..extract, run setup.rb
</p>
        <p>
gem install rails 2.3.5
</p>
        <p>
rails --version
</p>
        <p>
          <a title="http://docs.heroku.com/windows" href="http://docs.heroku.com/windows">http://docs.heroku.com/windows</a> –
good install screencast
</p>
        <h3>Hello World App
</h3>
        <p>
rails blog
</p>
        <p>
cd blog
</p>
        <p>
ruby script/server
</p>
        <p>
localhost:3000
</p>
        <p>
uses WEBrick 1.3.1
</p>
        <p>
am getting strange error:
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_2.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="713" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb.png" width="771" border="0" />
          </a>
        </p>
        <p>
Install SQLite3
</p>
        <p>
          <a title="http://akitaonrails.com/2009/01/13/the-best-environment-for-rails-on-windows" href="http://akitaonrails.com/2009/01/13/the-best-environment-for-rails-on-windows">http://akitaonrails.com/2009/01/13/the-best-environment-for-rails-on-windows</a>
        </p>
        <p>
          <a title="http://www.sqlite.org/download.html" href="http://www.sqlite.org/download.html">http://www.sqlite.org/download.html</a>
        </p>
        <p>
sqlite3.exe into \windows
</p>
        <p>
sqlite3.dll into system32
</p>
        <p>
 
</p>
        <p>
          <a title="http://allaboutruby.wordpress.com/2009/07/20/installing-rails-on-windows-3-years-later/" href="http://allaboutruby.wordpress.com/2009/07/20/installing-rails-on-windows-3-years-later/">http://allaboutruby.wordpress.com/2009/07/20/installing-rails-on-windows-3-years-later/</a>
        </p>
        <p>
gem install sqlite3-ruby
</p>
        <p>
cd \code\ruby\hello
</p>
        <p>
ruby script\server
</p>
        <p>
the crowd goes wild!!!
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_4.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="442" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_1.png" width="615" border="0" />
          </a>
        </p>
        <p>
          <strong>ruby script/generate scaffold post title:string description:text</strong>
        </p>
        <p>
This command creates a Post scaffold, a model/controller/view ready to be updated. 
The post model will have 2 fields – a title which is a single line of text and a description,
which is multi-line text.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_6.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="447" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_2.png" width="644" border="0" />
          </a>
        </p>
        <p>
          <strong>Run the database migration</strong>. This is because after creating the scaffold,
the database is not automatically updated with the new blog model, you need to do
it manually by running a <strong>rake db:migrate</strong> command
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_8.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="281" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_3.png" width="422" border="0" />
          </a>
        </p>
        <p>
cool – now have db integration and working scaffold
</p>
        <p>
          <a title="http://railsforum.com/" href="http://railsforum.com/">http://railsforum.com/</a>
        </p>
        <p>
          <a title="http://railscasts.com/episodes/archive" href="http://railscasts.com/episodes/archive">http://railscasts.com/episodes/archive</a>
        </p>
        <p>
          <a title="http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/" href="http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/">http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/</a> –
very simple app.
</p>
        <p>
          <a title="http://ruby-toolbox.com/categories/rails_form_builders.html" href="http://ruby-toolbox.com/categories/rails_form_builders.html">http://ruby-toolbox.com/categories/rails_form_builders.html</a>
        </p>
        <p>
 
</p>
        <p>
          <a title="http://guides.rubyonrails.org/getting_started.html#installing-rails" href="http://guides.rubyonrails.org/getting_started.html#installing-rails">http://guides.rubyonrails.org/getting_started.html#installing-rails</a>
        </p>
        <p>
in c:\code
</p>
        <p>
rails blog   - this creates a rails app that uses sqllite.
</p>
        <p>
 
</p>
        <h3>The Blog from Guide
</h3>
        <p>
          <a title="http://guides.rubyonrails.org/getting_started.html" href="http://guides.rubyonrails.org/getting_started.html">http://guides.rubyonrails.org/getting_started.html</a>
        </p>
        <p>
rails blog
</p>
        <p>
rake db:create
</p>
        <blockquote>
          <p>
rake –T  shows all rake (general purpose command runner) commands
</p>
        </blockquote>
        <p>
ruby script/generate controller home index  -creates files including <tt>app/views/home/index.html.erb</tt>.
This is the template that will be used to display the results of the:
</p>
        <p>
 <tt>index</tt> action (method) in the <tt>home</tt> controller.
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_12.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="165" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_5.png" width="495" border="0" />
          </a>
        </p>
        <p>
edit index.html.erb to &lt;H1&gt;Hello Rails&lt;/H1&gt;
</p>
        <p>
ruby script\server
</p>
        <p>
          <a href="http://locahost:3000/home/index">http://locahost:3000/home/index</a>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_18.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="166" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_8.png" width="360" border="0" />
          </a>
        </p>
        <h5>Change home page
</h5>
        <p>
config\routes.rb
</p>
        <p>
map.root :controller =&gt; "home" 
</p>
        <h5>Scaffolding
</h5>
        <p>
Rails <em>scaffolding</em> is a quick way to generate some of the major pieces of
an application. If you want to create the models, views, and controllers for a new
resource in a single operation, scaffolding is the tool for the job.
</p>
        <p>
          <code>ruby script/generate scaffold Post name:string title:string content:text</code>
        </p>
        <p>
This creates a model, a db migration ruby file, views and changes the config\route.rb
file.
</p>
        <p>
rake db:migrate
</p>
        <p>
put in:  &lt;%= link_to "My Blog", posts_path %&gt; 
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_14.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="217" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_6.png" width="411" border="0" />
          </a>
        </p>
        <p>
then
</p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_16.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="241" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_7.png" width="428" border="0" />
          </a>
        </p>
        <p>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_20.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="266" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_9.png" width="398" border="0" />
          </a>
        </p>
        <p>
 
</p>
        <h3>Validation
</h3>
        <p>
The model file, <tt>app/models/post.rb</tt> is about as simple as it can get:
</p>
        <p>
          <code>validates_presence_of :name, :title </code>
        </p>
        <p>
          <code>validates_length_of :title, :minimum =&gt; 5 </code>
        </p>
        <h3>
          <a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_22.png">
            <img title="image" style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="499" alt="image" src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_10.png" width="447" border="0" />
          </a> 
</h3>
        <h3>View
</h3>
        <blockquote>
          <p>
&lt;% @posts.each do |post| %&gt; 
<br />
  &lt;tr&gt; 
<br />
    &lt;td&gt;&lt;%=h post.name %&gt;&lt;/td&gt; 
<br />
    &lt;td&gt;&lt;%=h post.title %&gt;&lt;/td&gt; 
<br />
    &lt;td&gt;&lt;%=h post.content %&gt;&lt;/td&gt; 
<br />
    &lt;td&gt;&lt;%= link_to 'Show', post %&gt;&lt;/td&gt; 
<br />
    &lt;td&gt;&lt;%= link_to 'Edit', edit_post_path(post) %&gt;&lt;/td&gt; 
<br />
    &lt;td&gt;&lt;%= link_to 'Destroy', post, :confirm =&gt; 'Are you
sure?', :method =&gt; :delete %&gt;&lt;/td&gt; 
<br />
  &lt;/tr&gt; 
<br />
&lt;% end %&gt;
</p>
        </blockquote>
        <p>
        </p>
        <p>
h is a rails helper
</p>
        <p>
lik_to buils hyperlinks
</p>
        <p>
edit_post_path
</p>
        <p>
new_post_path
</p>
        <h3>Layout
</h3>
        <p>
These are containers for views
</p>
        <p>
app\views\layouts\posts.html.erb
</p>
        <p>
          <code>&lt;body style="background: #EEEEEE;"&gt; </code>
        </p>
        <p>
now all views for posts have a grey background
</p>
        <h3>Entering Data and Wiring Up
</h3>
        <blockquote>
          <p>
&lt;% form_for(@post) do |f| %&gt; 
<br />
  &lt;%= f.error_messages %&gt;
</p>
        </blockquote>
        <p>
          <code>form_for block is used to create an html form..</code>
        </p>
        <blockquote>
          <p>
            <code>&lt;%= f.label :name %&gt;&lt;br /&gt; </code>
          </p>
          <p>
            <code>&lt;%= f.text_field :name %&gt; </code>
          </p>
        </blockquote>
        <p>
          <code>wires up a text box with name attribute</code>
        </p>
        <h3>DRYing up Code - Partials
</h3>
        <p>
scaffold generated views for new and edit are largely identical.. so can use partials
template.
</p>
        <p>
_form.html.erb  underscore is convention for partial
</p>
        <blockquote>
          <p>
&lt;% form_for(@post) do |f| %&gt; 
<br />
  &lt;%= f.error_messages %&gt; 
</p>
          <p>
  &lt;p&gt; 
<br />
    &lt;%= f.label :name %&gt;&lt;br /&gt; 
<br />
    &lt;%= f.text_field :name %&gt; 
<br />
  &lt;/p&gt; 
<br />
  &lt;p&gt; 
<br />
    &lt;%= f.label :title %&gt;&lt;br /&gt; 
<br />
    &lt;%= f.text_field :title %&gt; 
<br />
  &lt;/p&gt; 
<br />
  &lt;p&gt; 
<br />
    &lt;%= f.label :content %&gt;&lt;br /&gt; 
<br />
    &lt;%= f.text_area :content %&gt; 
<br />
  &lt;/p&gt; 
<br />
  &lt;p&gt; 
<br />
    &lt;%= f.submit 'Save' %&gt; 
<br />
  &lt;/p&gt; 
<br />
&lt;% end %&gt;
</p>
        </blockquote>
        <p>
and in new.html.erb
</p>
        <blockquote>
          <p>
&lt;h1&gt;New post&lt;/h1&gt; 
</p>
          <p>
&lt;%= render :partial =&gt; "form"  %&gt; 
</p>
          <p>
&lt;%= link_to 'Back', posts_path %&gt;
</p>
        </blockquote>
        <p>
****7.2 Using Filters to eliminate controller duplication
</p>
        <p>
 <a href="http://wiki.devchix.com/index.php?title=Server_2003">http://wiki.devchix.com/index.php?title=Server_2003</a></p>
        <h3>The Blog App Video
</h3>
        <p>
From front page of rails site:
</p>
        <p>
          <a title="http://www.opensourcerails.com/" href="http://www.opensourcerails.com/">http://www.opensourcerails.com/</a>
        </p>
        <p>
          <a href="http://www.softwaredeveloper.com/features/best-ruby-on-rails-061307/">http://www.softwaredeveloper.com/features/best-ruby-on-rails-061307/</a>
        </p>
        <p>
          <a href="http://www.3months.com/technology">http://www.3months.com/technology</a>
        </p>
        <p>
          <a href="http://blog.obiefernandez.com/content/">http://blog.obiefernandez.com/content/</a>
        </p>
        <p>
 
</p>
        <p>
Auth
</p>
        <p>
          <a href="http://wiki.rubyonrails.org/howtos/authentication-authorization">http://wiki.rubyonrails.org/howtos/authentication-authorization</a>
        </p>
        <p>
          <strong>Authentication</strong> is what you do when you let a user identify itself.
This is needed when you want to offer a login access to your application. 
</p>
        <p>
          <strong>Authorization</strong> is what you do when you check the credentials of a
user before letting him/her interact with specific sections of your system. This is
needed when you have restricted areas/actions.
</p>
        <img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=10e5cb7d-7515-4b3e-b364-a3889ddd517b" />
      </body>
      <title>Ruby on Rails / Broken Collar Bone</title>
      <guid isPermaLink="false">http://www.programgood.net/PermaLink,guid,10e5cb7d-7515-4b3e-b364-a3889ddd517b.aspx</guid>
      <link>http://www.programgood.net/2010/03/26/RubyOnRailsBrokenCollarBone.aspx</link>
      <pubDate>Fri, 26 Mar 2010 05:36:46 GMT</pubDate>
      <description>&lt;p&gt;
After an awesome mountainbike ride I’ve managed to break my collar bone.&amp;nbsp; I wouldn’t
recommend this :-)
&lt;/p&gt;
&lt;p&gt;
So I though I’d make the most of the ‘opportunity’ and have a look at RoR..
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_10.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=516 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_4.png" width=388 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Goal:&amp;nbsp; To deploy an application live
&lt;/p&gt;
&lt;h3&gt;Downloading RoR
&lt;/h3&gt;
&lt;p&gt;
rubyonrail.org – download.&amp;nbsp; Getting 1.8.7 of Ruby.. tick add to executable, and
associate .rb
&lt;/p&gt;
&lt;p&gt;
rubygems – package manager..extract, run setup.rb
&lt;/p&gt;
&lt;p&gt;
gem install rails 2.3.5
&lt;/p&gt;
&lt;p&gt;
rails --version
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://docs.heroku.com/windows href="http://docs.heroku.com/windows"&gt;http://docs.heroku.com/windows&lt;/a&gt; –
good install screencast
&lt;/p&gt;
&lt;h3&gt;Hello World App
&lt;/h3&gt;
&lt;p&gt;
rails blog
&lt;/p&gt;
&lt;p&gt;
cd blog
&lt;/p&gt;
&lt;p&gt;
ruby script/server
&lt;/p&gt;
&lt;p&gt;
localhost:3000
&lt;/p&gt;
&lt;p&gt;
uses WEBrick 1.3.1
&lt;/p&gt;
&lt;p&gt;
am getting strange error:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_2.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=713 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb.png" width=771 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Install SQLite3
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://akitaonrails.com/2009/01/13/the-best-environment-for-rails-on-windows href="http://akitaonrails.com/2009/01/13/the-best-environment-for-rails-on-windows"&gt;http://akitaonrails.com/2009/01/13/the-best-environment-for-rails-on-windows&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://www.sqlite.org/download.html href="http://www.sqlite.org/download.html"&gt;http://www.sqlite.org/download.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
sqlite3.exe into \windows
&lt;/p&gt;
&lt;p&gt;
sqlite3.dll into system32
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://allaboutruby.wordpress.com/2009/07/20/installing-rails-on-windows-3-years-later/ href="http://allaboutruby.wordpress.com/2009/07/20/installing-rails-on-windows-3-years-later/"&gt;http://allaboutruby.wordpress.com/2009/07/20/installing-rails-on-windows-3-years-later/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
gem install sqlite3-ruby
&lt;/p&gt;
&lt;p&gt;
cd \code\ruby\hello
&lt;/p&gt;
&lt;p&gt;
ruby script\server
&lt;/p&gt;
&lt;p&gt;
the crowd goes wild!!!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_4.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=442 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_1.png" width=615 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;ruby script/generate scaffold post title:string description:text&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This command creates a Post scaffold, a model/controller/view ready to be updated.&amp;nbsp;
The post model will have 2 fields – a title which is a single line of text and a description,
which is multi-line text.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_6.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=447 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_2.png" width=644 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Run the database migration&lt;/strong&gt;. This is because after creating the scaffold,
the database is not automatically updated with the new blog model, you need to do
it manually by running a &lt;strong&gt;rake db:migrate&lt;/strong&gt; command
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_8.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=281 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_3.png" width=422 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
cool – now have db integration and working scaffold
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://railsforum.com/ href="http://railsforum.com/"&gt;http://railsforum.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://railscasts.com/episodes/archive href="http://railscasts.com/episodes/archive"&gt;http://railscasts.com/episodes/archive&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/ href="http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/"&gt;http://allaboutruby.wordpress.com/2009/08/08/5-minute-project-in-rails/&lt;/a&gt; –
very simple app.
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://ruby-toolbox.com/categories/rails_form_builders.html href="http://ruby-toolbox.com/categories/rails_form_builders.html"&gt;http://ruby-toolbox.com/categories/rails_form_builders.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://guides.rubyonrails.org/getting_started.html#installing-rails href="http://guides.rubyonrails.org/getting_started.html#installing-rails"&gt;http://guides.rubyonrails.org/getting_started.html#installing-rails&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
in c:\code
&lt;/p&gt;
&lt;p&gt;
rails blog&amp;nbsp;&amp;nbsp; - this creates a rails app that uses sqllite.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;The Blog from Guide
&lt;/h3&gt;
&lt;p&gt;
&lt;a title=http://guides.rubyonrails.org/getting_started.html href="http://guides.rubyonrails.org/getting_started.html"&gt;http://guides.rubyonrails.org/getting_started.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
rails blog
&lt;/p&gt;
&lt;p&gt;
rake db:create
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
rake –T&amp;nbsp; shows all rake (general purpose command runner) commands
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
ruby script/generate controller home index&amp;nbsp; -creates files including &lt;tt&gt;app/views/home/index.html.erb&lt;/tt&gt;.
This is the template that will be used to display the results of the:
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;tt&gt;index&lt;/tt&gt; action (method) in the &lt;tt&gt;home&lt;/tt&gt; controller.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_12.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=165 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_5.png" width=495 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
edit index.html.erb to &amp;lt;H1&amp;gt;Hello Rails&amp;lt;/H1&amp;gt;
&lt;/p&gt;
&lt;p&gt;
ruby script\server
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://locahost:3000/home/index"&gt;http://locahost:3000/home/index&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_18.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=166 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_8.png" width=360 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h5&gt;Change home page
&lt;/h5&gt;
&lt;p&gt;
config\routes.rb
&lt;/p&gt;
&lt;p&gt;
map.root :controller =&amp;gt; "home" 
&lt;/p&gt;
&lt;h5&gt;Scaffolding
&lt;/h5&gt;
&lt;p&gt;
Rails &lt;em&gt;scaffolding&lt;/em&gt; is a quick way to generate some of the major pieces of
an application. If you want to create the models, views, and controllers for a new
resource in a single operation, scaffolding is the tool for the job.
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;ruby script/generate scaffold Post name:string title:string content:text&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
This creates a model, a db migration ruby file, views and changes the config\route.rb
file.
&lt;/p&gt;
&lt;p&gt;
rake db:migrate
&lt;/p&gt;
&lt;p&gt;
put in:&amp;nbsp; &amp;lt;%= link_to "My Blog", posts_path %&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_14.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=217 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_6.png" width=411 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
then
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_16.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=241 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_7.png" width=428 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_20.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=266 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_9.png" width=398 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h3&gt;Validation
&lt;/h3&gt;
&lt;p&gt;
The model file, &lt;tt&gt;app/models/post.rb&lt;/tt&gt; is about as simple as it can get:
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;validates_presence_of :name, :title &lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;validates_length_of :title, :minimum =&amp;gt; 5 &lt;/code&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_22.png"&gt;&lt;img title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=499 alt=image src="http://www.programgood.net/content/binary/WindowsLiveWriter/RubyonRailsBrokenCollarBone_EB86/image_thumb_10.png" width=447 border=0&gt;&lt;/a&gt;&amp;nbsp;
&lt;/h3&gt;
&lt;h3&gt;View
&lt;/h3&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% @posts.each do |post| %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;tr&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%=h post.name %&amp;gt;&amp;lt;/td&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%=h post.title %&amp;gt;&amp;lt;/td&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%=h post.content %&amp;gt;&amp;lt;/td&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Show', post %&amp;gt;&amp;lt;/td&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Edit', edit_post_path(post) %&amp;gt;&amp;lt;/td&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&amp;lt;%= link_to 'Destroy', post, :confirm =&amp;gt; 'Are you
sure?', :method =&amp;gt; :delete %&amp;gt;&amp;lt;/td&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;/tr&amp;gt; 
&lt;br&gt;
&amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
h is a rails helper
&lt;/p&gt;
&lt;p&gt;
lik_to buils hyperlinks
&lt;/p&gt;
&lt;p&gt;
edit_post_path
&lt;/p&gt;
&lt;p&gt;
new_post_path
&lt;/p&gt;
&lt;h3&gt;Layout
&lt;/h3&gt;
&lt;p&gt;
These are containers for views
&lt;/p&gt;
&lt;p&gt;
app\views\layouts\posts.html.erb
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;&amp;lt;body style="background: #EEEEEE;"&amp;gt; &lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
now all views for posts have a grey background
&lt;/p&gt;
&lt;h3&gt;Entering Data and Wiring Up
&lt;/h3&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_for(@post) do |f| %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;%= f.error_messages %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;code&gt;form_for block is used to create an html form..&lt;/code&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;code&gt;&amp;lt;%= f.label :name %&amp;gt;&amp;lt;br /&amp;gt; &lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;&amp;lt;%= f.text_field :name %&amp;gt; &lt;/code&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;code&gt;wires up a text box with name attribute&lt;/code&gt;
&lt;/p&gt;
&lt;h3&gt;DRYing up Code - Partials
&lt;/h3&gt;
&lt;p&gt;
scaffold generated views for new and edit are largely identical.. so can use partials
template.
&lt;/p&gt;
&lt;p&gt;
_form.html.erb&amp;nbsp; underscore is convention for partial
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;% form_for(@post) do |f| %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;%= f.error_messages %&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp; &amp;lt;p&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.label :name %&amp;gt;&amp;lt;br /&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.text_field :name %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;/p&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;p&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.label :title %&amp;gt;&amp;lt;br /&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.text_field :title %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;/p&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;p&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.label :content %&amp;gt;&amp;lt;br /&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.text_area :content %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;/p&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;p&amp;gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;%= f.submit 'Save' %&amp;gt; 
&lt;br&gt;
&amp;nbsp; &amp;lt;/p&amp;gt; 
&lt;br&gt;
&amp;lt;% end %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
and in new.html.erb
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&amp;lt;h1&amp;gt;New post&amp;lt;/h1&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%= render :partial =&amp;gt; "form"&amp;nbsp; %&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;%= link_to 'Back', posts_path %&amp;gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
****7.2 Using Filters to eliminate controller duplication
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;a href="http://wiki.devchix.com/index.php?title=Server_2003"&gt;http://wiki.devchix.com/index.php?title=Server_2003&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;The Blog App Video
&lt;/h3&gt;
&lt;p&gt;
From front page of rails site:
&lt;/p&gt;
&lt;p&gt;
&lt;a title=http://www.opensourcerails.com/ href="http://www.opensourcerails.com/"&gt;http://www.opensourcerails.com/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.softwaredeveloper.com/features/best-ruby-on-rails-061307/"&gt;http://www.softwaredeveloper.com/features/best-ruby-on-rails-061307/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.3months.com/technology"&gt;http://www.3months.com/technology&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.obiefernandez.com/content/"&gt;http://blog.obiefernandez.com/content/&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Auth
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://wiki.rubyonrails.org/howtos/authentication-authorization"&gt;http://wiki.rubyonrails.org/howtos/authentication-authorization&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Authentication&lt;/strong&gt; is what you do when you let a user identify itself.
This is needed when you want to offer a login access to your application. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Authorization&lt;/strong&gt; is what you do when you check the credentials of a
user before letting him/her interact with specific sections of your system. This is
needed when you have restricted areas/actions.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.programgood.net/aggbug.ashx?id=10e5cb7d-7515-4b3e-b364-a3889ddd517b" /&gt;</description>
      <comments>http://www.programgood.net/CommentView,guid,10e5cb7d-7515-4b3e-b364-a3889ddd517b.aspx</comments>
      <category>Ruby on Rails</category>
    </item>
  </channel>
</rss>