# Cleanest syntax for form partial?

**URL:** <https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843>\
**Category:** Rails\
**Created:** [May 16, 2008, 9:14pm UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843 "2008-05-16T21:14:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 16, 2008, 9:14pm UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/1 "2008-05-16T21:14:20Z")

</div>

When I’m in a form block and am including a partial, I use:

\<%= render :partial =\> ‘form’, :locals =\> {:f =\> f} %\>

Is there a cleaner way to write this? Something new in Rails 2 maybe?

Michael

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 16, 2008, 9:22pm UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/2 "2008-05-16T21:22:01Z")

</div>

On Fri, May 16, 2008 at 3:13 PM, Michael S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> \<%= render :partial =\> ‘form’, :locals =\> {:f =\> f} %\>
> 
> Is there a cleaner way to write this? Something new in Rails 2 maybe?

I don’t know of one off hand. What’s dirty about that style?

Craig

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 18, 2008, 1:38am UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/3 "2008-05-18T01:38:57Z")

</div>

Check this out:

[http://www.railsjedi.com/posts/22-Better-Partials-Plugin-for-Ruby-on-Rails](http://www.railsjedi.com/posts/22-Better-Partials-Plugin-for-Ruby-on-Rails)

Turns this:

\<%= render :partial =\> ‘form’, :locals =\> {:f =\> f} %\>

into:

\<%= partial “form”, :f =\> f %\>

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 19, 2008, 4:06am UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/4 "2008-05-19T04:06:30Z")

</div>

\<% form\_for … do |@f| %\>  
\<%= render :partial =\> “form” %\>  
\<% end %\>

Even cleaner! Passing in your form object as an instance variable gives  
you  
the added bonus of having it available in any partial you render after  
defining it.

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 18, 2008, 3:38am UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/5 "2008-05-18T03:38:41Z")

</div>

In Rails 2.1:

\<% form\_for … do |f| %\>  
\<%= render :partial =\> f %\>

which renders \_form.html.erb (\*) where the local variable is called  
form.

\*) or \_foobar\_form.html.erb if you use a custom FoobarFormBuilder

[http://dev.rubyonrails.org/changeset/8646](http://dev.rubyonrails.org/changeset/8646)

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 19, 2008, 1:22pm UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/6 "2008-05-19T13:22:08Z")

</div>

Bugger!

I had a niggling thought at the back of my mind as I wrote that post  
that it  
was the case, but chose to ignore it.

Oh well, render :partial =\> “form”, :f =\> f looks like the cleanest  
way  
for now, unless you don’t mind not being Ruby 1.9 compatible, but it  
will  
come to bite you in the ass later on.

On Mon, May 19, 2008 at 8:45 PM, Rick DeNatale [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > defining it.
> 
> My blog on Ruby  
> [http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)
> 
> >

–  
Appreciated my help?  
Reccommend me on Working With Rails  
[http://workingwithrails.com/person/11030-ryan-bigg](http://workingwithrails.com/person/11030-ryan-bigg)

---

<div class="post-metadata">

**Author:** ![wickie](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/ba9def/32.png) [@wickie](https://www.ruby-forum.com/u/wickie)\
**Post date:** [May 19, 2008, 1:16pm UTC](https://www.ruby-forum.com/t/cleanest-syntax-for-form-partial/137843/7 "2008-05-19T13:16:10Z")

</div>

On Sun, May 18, 2008 at 10:05 PM, Ryan B. (Radar)  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> \<% form\_for … do |@f| %\>  
> \<%= render :partial =\> “form” %\>  
> \<% end %\>
> 
> Even cleaner! Passing in your form object as an instance variable gives you  
> the added bonus of having it available in any partial you render after  
> defining it.

Cleanliness is in the eye of the beholder.

In any case, beware that Ruby 1.9 disallows using instance variables  
as block parameters, so if you’re forward thinking this might be a  
technique to avoid.

–  
Rick DeNatale

My blog on Ruby  
[http://talklikeaduck.denhaven2.com/](http://talklikeaduck.denhaven2.com/)
