リンク用ボタンを作る
リンク用ボタンを作る
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 + "'" + ' )" >'
endreturn dscrptn
end
private
##
# param:optn オプションをHASHで渡されるとURL引数に変換する
##
def optn_uri_dscrptn( optn )dsctptn = ''
if optn == nil then
return dsctptn
endoptn.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
endreturn 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' )" >
簡単なリンクボタンになら利用できると思います。