buttun_toメソッド
HTMLの
デフォルトテンプレート
テンプレートファイルをコントローラーと同じ名前でapp/views/layoutsディレクトリ内に作成すると、そのコントローラーで描画されるすべてのビューにはデフォルトでそのレイアウトが適用される。
form_for
いちいちコードを書いていてはDRYに反するので、
そんなときはform_forを使用して一括で記述する。
<h1>新しい商品</h1> <% form_for(@product) do |f| %> <%= f.error_messages %> <p> <%= f.label :title %><br /> <%= f.text_field :title %> </p> <p> <%= f.label :description %><br /> <%= f.text_area :description, :rows => 6 %> </p> <p> <%= f.label :image_url %><br /> <%= f.text_field :image_url %> </p> <p> <%= f.label :price %><br /> <%= f.text_field :price %> </p> <p> <%= f.submit '作成' %> </p> <% end %> <%= link_to '戻る', products_path %>
サーチフォームのボタンが改行してしまう。
iphoneで、サーチフォームのボタンが改行してしまう。
PCでは入力フォームとボタンが一行で表示されるのですが、iphoneだとボタンが改行されて表示されてしまいました。
こうなるはずが、
_________________________________
________________________________ | [検索] |
こうなってしまう。
_________________________________
________________________________ |
[検索]
対処法としては、formタグをテーブルで囲うことにしました。
更に、入力フォームと検索ボタンが密着して表示されるようalignで右揃え左揃えを指定しています。
<table><tr> <% form_tag "foo/bar", {:method => :get} do %> <td align="right"><%= text_field_tag :q, params[:q] %></td> <td align="left"><%= submit_tag "検索", :id => "sbsbmtbtn", :alt => "検索" %></td> <% end %> </tr></table>
今回はこの方法で切り抜けましたが、画像サイズを画面に合わせてきっちりと指定し、改行させないようにするという方法もあります。
■
ActionHelperのsubmit_tagで値を渡す方法
form_tagでボタンが1つ以上ある場合、どのボタンを押されたか判断する場合、submit_tagを条件分作り、コントローラで受け取る値でどのボタンが押されたか判別する。
このとき、ボタン表示の文字とコントローラーに渡す値を別にしたい場合、具体的には、ボタン表示を「編集」や「削除」などの日本語にして、コントローラーに渡す引数を"edit"や"delete"にしたいという場合。
ずばり、:nameオプションを使用すればいい。
- ビュー
<% form_tag('/hoge/foo', :method => :get)do %>
<%= submit_tag '編集', :name=>'edit' %>
<%= submit_tag '削除', :name=>'delete' %><% end %>
- コントローラー
def foo
if params[:edit]
#'編集'ボタンを押された場合の処理
end
if params['delete']
#'削除'ボタンを押された場合の処理
end
end
Missing template にはまる。
共通部分を切り分けて、partial ファイルとして同じフォルダに保存し<%= render(:partial => "aaa/hoge") %>
としたところ、
Missing template エラー
が出た。
スペルミスもなく、パスは正しいしいはずなのでなんでかなぁ〜〜ill
と悩むこと暫し・・・
サーバーを再起動したらあっさり解決しました。