リンク用ボタンを作る

INDEX PAGE


リンク用ボタンを作る




Rubyには日付形式の入力をサポートする各種フォームがあります。
下にまとめてみます。


機能      記述方法      備考
リンク      link_to     
イメージ      image_tag     
フォーム      form_tag     
 →テキストボックス      text_field     
 →テキストエリア      text_area     
 →パスワードボックス      password_field     
 →サブミットボタン      submit_button     
チェックボックス      check_box     
ラジオボタンン      radio_button     
リストボックス      select     
日付      date_select     


しかし、リンクボタンを簡単に実現するようなものは存在しないようです。
(存在していたらごめんなさい。)

と言うわけで、簡単なリンクボタンを実現するための関数を作成してみました。

"app/helper/application_helper.rb"に次のような関数を追加しています。

public

##
# param:name ボタン名称
# param:id  ボタンID
# param:lbl  ボタンラベル
# param:trgt 別ウィンドウにリンクする場合指定、指定なしまたは
# param:optn URLにオプションで引数を渡したい場合HASHを設定
##
def button(name, id, lbl, url , trgt = nil, optn = nil )


  dscrptn = '< input type="button" '
  dscrptn = dscrptn + 'name="' + name + '" '
  dscrptn = dscrptn + 'id="' + id + '" '
  dscrptn = dscrptn + 'value="' + lbl + '" '

  if trgt == nil then
   dscrptn = dscrptn + 'onclick="location.href=' + "'" + url + optn_uri_dscrptn(optn) + "'" + ' " >'
  else
   dscrptn = dscrptn + 'onclick="window.open( ' + "'" + url + optn_uri_dscrptn(optn) + "', '" + trgt + "'" + ' )" >'
  end

  return dscrptn

end

private

##
# param:optn オプションをHASHで渡されるとURL引数に変換する
##
def optn_uri_dscrptn( optn )

  dsctptn = ''

  if optn == nil then
    return dsctptn
  end

  optn.each do |key, vlu|
    unless vlu == nil && vlu.length < 1 then
      if dsctptn.length < 1 then
        dsctptn = dsctptn + "?" + key + '=' + vlu
      else
        dsctptn = dsctptn + "&" + key + '=' + vlu
      end
    end
  end

  return dsctptn
end

以上のような関数を利用することによって
JavaScriptとの連携でリンクボタンを実現することができました。

※実際にはこのロジックは別のモジュールに記述して
 application_helper.rbの中ではincludeを使用するほうがソースがすっきりします。

module ApplicationHelper
include HtmlButton
  ・
  ・
  ・ 


これを利用するViewのソースの中では

<%= button("button","button","yahoo","http://yahoo.co.jp") %>

このように記述すると、下記のようなHtmlタグが生成されます。

< input type="button" name="button" id="button" value="チェック" onclick="location.href='http://yahoo.co.jp' " >

また、下のように、オープンするウィンドウ及びURLのパラメーターを設定すると

<%= button("button","button","yahoo","http://yahoo.co.jp", "_blank" ,{"id" => "1"}) %>

下記のようなタグが生成されます。

< input type="button" name="button" id="button" value="チェック" onclick="window.open( 'http://yahoo.co.jp?id=1', '_blank' )" >

簡単なリンクボタンになら利用できると思います。


INDEX PAGE