<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>kyleheon.com: My Rails option_tag</title>
    <link>http://www.kyleheon.com/articles/2006/07/13/my-rails-option_tag</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Random musings about anything and everything...</description>
    <item>
      <title>My Rails option_tag</title>
      <description>&lt;p&gt;Being relatively new to Ruby and Rails I&amp;#8217;ve been taking it slow as I work through an application that I&amp;#8217;m building, mostly for fun but has applicability when finished where I work.&lt;/p&gt;


	&lt;p&gt;Anyways, I have a series of multiple select boxes that exist on a particular form. In all my research online I wasn&amp;#8217;t able to find a helper method that would handle multiple select boxes. Given that I decided to write a helper myself. At the moment this just writes out just the option tag and selects it if the value matches something found in a passed in collection.&lt;/p&gt;


	&lt;p&gt;Here is the helper code:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;option_tag&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;value&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;collection&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="keyword"&gt;begin&lt;/span&gt;
    &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="punct"&gt;(!&lt;/span&gt;&lt;span class="ident"&gt;collection&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;empty?&lt;/span&gt; &lt;span class="keyword"&gt;and&lt;/span&gt; &lt;span class="ident"&gt;collection&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;value&lt;/span&gt;&lt;span class="punct"&gt;))&lt;/span&gt;
      &lt;span class="ident"&gt;selected&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt; selected=&lt;span class="escape"&gt;\&amp;quot;&lt;/span&gt;selected&lt;span class="escape"&gt;\&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;rescue&lt;/span&gt;
    &lt;span class="ident"&gt;selected&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;nil&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&amp;lt;option value=&lt;span class="escape"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="expr"&gt;#{value}&lt;/span&gt;&lt;span class="escape"&gt;\&amp;quot;&lt;/span&gt;&lt;span class="expr"&gt;#{selected}&lt;/span&gt;&amp;gt;&lt;span class="expr"&gt;#{title}&lt;/span&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Here&amp;#8217;s how to use it:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;&amp;lt;p&amp;gt;&amp;lt;label for=&amp;quot;browser_id&amp;quot;&amp;gt;Browsers&amp;lt;/label&amp;gt;&amp;lt;br /&amp;gt;
&amp;lt;select id=&amp;quot;browser_id&amp;quot; name=&amp;quot;browser[id][]&amp;quot; size=&amp;quot;5&amp;quot; multiple=&amp;quot;multiple&amp;quot;&amp;gt;
  &amp;lt;% for browser in @browsers %&amp;gt;
    &amp;lt;%= option_tag(browser.id, browser.name, @item.browsers) %&amp;gt;
  &amp;lt;% end %&amp;gt;
&amp;lt;/select&amp;gt;
&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;I&amp;#8217;ll probably look into building something that can handle a multiple select and reuse as much of the Rails helper methods as possible.&lt;/p&gt;


	&lt;p&gt;If I completely missed something and can actually do what I want using what Rails offers please let me know, I&amp;#8217;d rather use what is there then roll my own unless I have a good reason to.&lt;/p&gt;


	&lt;p&gt;Also, should you see something glaringly wrong or inefficient in my code above please say so, as I said, I&amp;#8217;m just learning Ruby and Rails and want to learn how to do things the right way.&lt;/p&gt;</description>
      <pubDate>Thu, 13 Jul 2006 20:31:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:4a6dd489-9462-49db-945c-c1b96ec70fc7</guid>
      <author>Kyle Heon</author>
      <link>http://www.kyleheon.com/articles/2006/07/13/my-rails-option_tag</link>
      <category>Development</category>
      <category>rails</category>
      <category>ruby</category>
      <trackback:ping>http://www.kyleheon.com/articles/trackback/96</trackback:ping>
    </item>
    <item>
      <title>"My Rails option_tag" by Scoots</title>
      <description>&lt;p&gt;Yo Kyle!&lt;/p&gt;


	&lt;p&gt;Nice blog ya got going here&amp;#8230; drop me a line sometime, was just chatting with Lonestar (who works for me now in an official capacity), and we were trying to remember the name of your gaming site&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Mon, 17 Jul 2006 03:07:39 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:5e18520d-bd97-4755-b809-2331a72e9776</guid>
      <link>http://www.kyleheon.com/articles/2006/07/13/my-rails-option_tag#comment-13</link>
    </item>
  </channel>
</rss>
