LoginSignup
0
0

More than 3 years have passed since last update.

【Sinatra】Helperを追加

Posted at

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」を追加して返すという単純なものです。

アプリファイルにヘルパーメソッドを埋め込む場合

こちらは単純です。

myapp.rb
#中略

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」のフォルダとファイルを作成します。

helpers/helpers.rb
module Testhelper
    def  plusbb(a)
        return(a+"bb")
    end    
end

Testhelperというモジュールの中に、先ほどと同じplusbb(引数)のメソッドを定義しました。

myapp.rb
中略
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>

でアプリファイル内でヘルパーメソッドを呼び出す場合と全く同じ結果になります。

まとめ

ヘルパーメソッドはアプリファイル内に処理が速いのかなと思います。
でも、モジュール化し、処理を呼び出すことはアプリが大規模になるにつれ必要となってくるので、ヘルパーメソッドのみならず、他の場面でも参考にしていただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0