[前][次][番号順一覧][スレッド一覧]

rails:209

From: ABE Masahiro <abe@c...>
Date: Fri, 17 Jun 2005 05:31:54 +0900
Subject: [rails:209] Re: 複数のsubmitボタン


あべです。

 > こんなんでどうでしょうか。

ありがとうございます。

> filterに引数渡せればfilterに登録できてもっとスマートになりそうなんですが、

を参考にして次のようにしてみました。

- app/controllers/application.rb
  class ApplicationController < ActionController::Base
    before_filter :reparse_params
    private
    def reparse_params
      @params.each {|k, v|
        if k.include?('=')
          @params.delete(k)
          @params.update(CGIMethods.parse_query_parameters(k))
        end
      }
    end
  end

これで
  <intput type="submit" name="action=edit;id=1" value="編集">
などと書けます。これを簡単に生成するヘルパーメソッド submit_to も
定義しました。引数の順番は link_to に合わせます。

- app/helpers/application_helper.rb
  module ApplicationHelper
    def submit_to(value = "Save changes", options = { })
      tag("input", { "type" => "submit", "value" => value,
        "name" => options.to_a.map{|kv| kv.join('=') }.join(';') })
    end
  end

これで件のテンプレートは次のようになりました。

  <%= form_tag %>
    <!-- アイテムをリスト表示 -->
    <table>
      <% @list.each do |item| %>
        <tr>
          <td><%= check_box_tag("sel[], item.id) %></td>
          <td><%= item.name %></td>
          <td><%= item.price %></td>
          <td><%= link_to("編集", :action => "edit", :id => item.id) %></td>
          <!-- ここ↑をsubmit_to にすると編集もボタンにできる -->
        </tr>
      <% end %>
    </table>

    <%= submit_to("削除", :action => "m_delete") %>
    <%= submit_to("更新", :action => "m_update") %><
    <!-- 一括処理のメソッド名は m_ にしました -->
  <%= end_form_tag %>


-- 
ABE Masahiro <abe@c...>


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

       207 2005-06-16 09:51 [abe@c...            ] 複数のsubmitボタン                      
       208 2005-06-16 13:39 ┗[yu1@t...            ]                                       
->     209 2005-06-16 22:31  ┗[abe@c...            ]