# How to create and use RoR module?

**URL:** <https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526>\
**Category:** Rails\
**Created:** [August 8, 2007, 9:00am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526 "2007-08-08T09:00:25Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![makenai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@makenai](https://www.ruby-forum.com/u/makenai)\
**Post date:** [August 8, 2007, 9:00am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526/1 "2007-08-08T09:00:25Z")

</div>

Cross-posting from comp.lang.ruby

Hi,

I am quite new to ruby and ruby on rails. I am trying to user helper  
module in my controller but fail ☹ I added languages\_helper.rb file  
to  
helpers directory in my RoR app. The file looks like this:

module LanguagesHelper

def LanguagesHelper.sort\_to\_first(langs, lang)  
…my secret method here…  
end

end

Then I want to use it in LanguagesController. I put

require “languages\_helper”

right in the beginning of the class body, and then in one of  
controller’s methods I try to do

ordered\_langs = LanguagesHelper.sort\_to\_first(all\_langs, lang)

When while browsing I come to this place in my browser, there is a  
message:

undefined method `sort\_to\_first’ for LanguagesHelper:Module

What is wrong?

Best regards  
Pawel S.

---

<div class="post-metadata">

**Author:** ![makenai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@makenai](https://www.ruby-forum.com/u/makenai)\
**Post date:** [August 8, 2007, 9:26am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526/2 "2007-08-08T09:26:33Z")

</div>

> require “languages\_helper”  
> ordered\_langs = LanguagesHelper.sort\_to\_first(all\_langs, lang)  
> undefined method `sort\_to\_first’ for LanguagesHelper:Module

i believe the error appears because the LanguageHelper isn’t included  
correctly and so the method isn’t actually embedded in the controller;

did you add

‘include LanguagesHelper’ ? (this mixes it in)

also, you can put in modules in the RAILS\_ROOT/lib folder and require  
them just as easily (it doesn’t have to be a ‘helper’)

---

<div class="post-metadata">

**Author:** ![makenai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@makenai](https://www.ruby-forum.com/u/makenai)\
**Post date:** [August 8, 2007, 9:38am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526/3 "2007-08-08T09:38:28Z")

</div>

> i believe the error appears because the LanguageHelper isn’t included  
> correctly and so the method isn’t actually embedded in the controller;

I think it is included correctly, because in error message there is  
undefined method, but there is nothing like “unknown module  
LanguagesHelper”. I think module is available, but method is not. (But  
of course I can be wrong).

> did you add
> 
> ‘include LanguagesHelper’ ? (this mixes it in)

I tried this too, but it didn’t help ☹

> also, you can put in modules in the RAILS\_ROOT/lib folder and require  
> them just as easily (it doesn’t have to be a ‘helper’)

I prefer to have it in helper, just for this app.

Thanks anyway  
Regards  
PaweÅ‚ Stawicki

---

<div class="post-metadata">

**Author:** ![makenai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@makenai](https://www.ruby-forum.com/u/makenai)\
**Post date:** [August 8, 2007, 10:41am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526/4 "2007-08-08T10:41:36Z")

</div>

I tried this too ☹

---

<div class="post-metadata">

**Author:** ![makenai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@makenai](https://www.ruby-forum.com/u/makenai)\
**Post date:** [August 8, 2007, 10:48am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526/5 "2007-08-08T10:48:18Z")

</div>

Shai R. wrote:

> > > i believe the error appears because the LanguageHelper isn’t included  
> > > correctly and so the method isn’t actually embedded in the controller;
> > 
> > I think it is included correctly, because in error message there is  
> > undefined method, but there is nothing like “unknown module  
> > LanguagesHelper”. I think module is available, but method is not. (But  
> > of course I can be wrong).
> 
> …i’m not sure about this, but if you change
> 
> module LanguagesHelper  
> def LanguagesHelper.sort\_to\_first(langs, lang)  
> …my secret method here…  
> end  
> end
> 
> to
> 
> module LanguagesHelper  
> def sort\_to\_first(langs, lang)  
> …my secret method here…  
> end  
> end

> and then in the controller, just put the method name (without prepending  
> it to LanguageHelper) like
> 
> ordered\_langs = sort\_to\_first(all\_langs, lang)
> 
> i’ve had something similar, and i believe this worked for me.  
> what is the outcome if you use the above?

Hi Pawel S.,

U put include instead of require it will work

include LanguageHelper

---

<div class="post-metadata">

**Author:** ![makenai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@makenai](https://www.ruby-forum.com/u/makenai)\
**Post date:** [August 8, 2007, 10:01am UTC](https://www.ruby-forum.com/t/how-to-create-and-use-ror-module/111526/6 "2007-08-08T10:01:12Z")

</div>

> > i believe the error appears because the LanguageHelper isn’t included  
> > correctly and so the method isn’t actually embedded in the controller;
> 
> I think it is included correctly, because in error message there is  
> undefined method, but there is nothing like “unknown module  
> LanguagesHelper”. I think module is available, but method is not. (But  
> of course I can be wrong).

…i’m not sure about this, but if you change

module LanguagesHelper  
def LanguagesHelper.sort\_to\_first(langs, lang)  
…my secret method here…  
end  
end

to

module LanguagesHelper  
def sort\_to\_first(langs, lang)  
…my secret method here…  
end  
end

and then in the controller, just put the method name (without prepending  
it to LanguageHelper) like

ordered\_langs = sort\_to\_first(all\_langs, lang)

i’ve had something similar, and i believe this worked for me.  
what is the outcome if you use the above?
