sinatraでHelperメソッドを呼び出し方を見ていきます!
*参考
http://sinatrarb.com/intro.html
https://hawksnowlog.blogspot.com/2017/10/sinatra-with-haml.html
https://codeday.me/jp/qa/20190301/335130.html
Helperについて
処理を共通化し、コードを見やすくしたり、コードの記述量を減らしたい場合、処理内容を「呼び出し可能な位置」に置くことです。
http://sinatrarb.com/intro.html
こちらではヘルパーメソッドをアプリのファイルに直接記述してますが、自分はRailsから始めたので少し違和感があります。笑
なので、ヘルパー用に新しくファイルを作成し、ヘルパーメソッドを呼び出す方法も紹介します。
なお、今回呼び出したいヘルパーメソッドは、与えられた引数に「bb」を追加して返すという単純なものです。
アプリファイルにヘルパーメソッドを埋め込む場合
こちらは単純です。
#中略
helpers do
def plusbb(a)
return(a+"bb")
end
end
get '/' do
@code = "ブリ"
@content = plusbb('aa')
erb :index
end
view/index.erb
<div><%= @code %></div>
<div><%= @content %>:ヘルパー呼び出し</div>
ヘルパーメソッドを直接アプリのファイルに書き込むことで、indec.erbからヘルパーメソッドを呼び出すことができました。
別ファイルにヘルパーメソッドを記述へする場合
こちらは、別ファイルにモジュールを作成し、そのモジュールを呼び出します。
myapp.rbと同じディレクトリに「helpers/helpers.rb」のフォルダとファイルを作成します。
module Testhelper
def plusbb(a)
return(a+"bb")
end
end
Testhelperというモジュールの中に、先ほどと同じplusbb(引数)のメソッドを定義しました。
中略
require './helpers/helpers.rb'
helpers Testhelper
get '/' do
@code = "ブリ"
@content = plusbb('aa')
erb :index
end
こちらも追記するコードがあります。
require './helpers/helpers.rb'
で、helpersフォルダ配下のhelpers.rbを呼び出します。
helpers Testhelper
は、ヘルパーメソッドを呼び出しています。
view/index.erb
<div><%= @code %></div>
<div><%= @content %>:ヘルパー呼び出し</div>
でアプリファイル内でヘルパーメソッドを呼び出す場合と全く同じ結果になります。
まとめ
ヘルパーメソッドはアプリファイル内に処理が速いのかなと思います。
でも、モジュール化し、処理を呼び出すことはアプリが大規模になるにつれ必要となってくるので、ヘルパーメソッドのみならず、他の場面でも参考にしていただけると幸いです。