*_field_tag にオプションを指定する

久々に Railsに触って、ずいぶんといろんなことを忘れているので、そうした Tipsを記録しておきます。

text_field_tag と password_field_tag

text_field_tag と password_field_tag にフォーカスが移ったら、フィールドの背景色を変えるようにしたい。

 <% focus = {:autocomplete => 'off', :onfocus => "this.style.background='#ffc';",
             :onblur => "this.style.background='#fff';"} %>
 

 <% form_tag session_path do %>
   <%= text_field_tag 'login', @login, focus %>
   <%= password_field_tag 'password', nil, focus %>
 <% end %>

メモ

def text_field_tag(name, value = nil, options = {})
def password_field_tag(name = "password", value = nil, options = {})

なんでメモしておこうと思ったかというと、オプションを指定するときに valueを忘れてしまい、valueにオプションの文字列が入ってしまったから。value = nil でも忘れないこと。

その他

「:onfocus」と「:onblur」は忘れがち。
背景色を変えるのは、"this.style.background"。
<body onload="">が使えないときは、<script type="text/javascript">window.onload=function(){document.getElementById('login').focus();}</script>で OK。