# Custom view helper

**URL:** <https://www.ruby-forum.com/t/custom-view-helper/187737>\
**Category:** Rails\
**Created:** [April 28, 2010, 4:35pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737 "2010-04-28T16:35:02Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 4:35pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/1 "2010-04-28T16:35:02Z")

</div>

How would I take the following and make it a view helper?

site.name   
 site.address   
 site.city, site.state.upcase,  
site.zipcode

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 4:58pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/2 "2010-04-28T16:58:38Z")

</div>

Chris H. wrote:

> How would I take the following and make it a view helper?
> 
> site.name   
> site.address   
> site.city, site.state.upcase,  
> site.zipcode

Try following code

return “#{site.name}   
 #{site.address}   
  
@{site.city},#{site.state.upcase}, #{site.zipcode}”

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 5:08pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/3 "2010-04-28T17:08:24Z")

</div>

Thanks, I am looking to put in in the helper module as a view helper.

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 5:19pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/4 "2010-04-28T17:19:03Z")

</div>

Chris H. wrote:

> Thanks, I am looking to put in in the helper module as a view helper.

Hi Chris,

You can use the above code by putting it in a helper function like

def function\_name(site)  
return “#{site.name}   
 #{site.address}   
  
@{site.city},#{site.state.upcase}, #{site.zipcode}”

end

You need to include the helper and call function from view page, like

\<%= function\_name(site) %\>

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 5:42pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/5 "2010-04-28T17:42:58Z")

</div>

Thanks. How would I insert erb into this. \<%= link\_to site.name,  
site\_path(site) %\>. I cannot seem to get it to interpret the erb it  
comes out like a string.

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 5:59pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/6 "2010-04-28T17:59:22Z")

</div>

I like to use %Q{}'s so I don’t have to sweat quotes… see the last  
line for how to use link\_to (or any other view helper for that matter)

def function\_name(site)  
%Q{#{site.name}  
  
#{site.address}  
  
#{site.city}, #{site.state.upcase}, #{site.zipcode}  
  
#{link\_to site.name site\_path(site)}  
}  
end

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 6:24pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/7 "2010-04-28T18:24:32Z")

</div>

On Apr 28, 2010, at 9:13 AM, Chris H. wrote:

> Ok, I mislead you a bit, it is in the controller for a google map  
> display.  
> I am getting:
> 
> undefined method `link\_to’ for #SitesController:0x6ccf090

This works for me in 2.3.5

ActionController::Base.helpers.link\_to(…)

---

<div class="post-metadata">

**Author:** ![bigdaddy71](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/bbe5ce/32.png) [@bigdaddy71](https://www.ruby-forum.com/u/bigdaddy71)\
**Post date:** [April 28, 2010, 6:15pm UTC](https://www.ruby-forum.com/t/custom-view-helper/187737/8 "2010-04-28T18:15:45Z")

</div>

Ok, I mislead you a bit, it is in the controller for a google map  
display.  
I am getting:

undefined method `link\_to’ for #SitesController:0x6ccf090
