0

form_tagこのフォームを からに変更したいform_forので、同じフォームで 2 つの送信ボタンを使用できるようになります。どうすれば変更できますか?

gallery.html.haml

- form_tag bulk_content_destroy_admin_project_path(params[@project.id]), :method => "get" do
            -if @entries.length == 0
              %h1 Theres is no design in project.
            -else 
              %input.select_all{:type => "checkbox"}
              = submit_tag "Delete All", :style => "margin-bottom: 10px;" 
              %ul.gallery
                -@entries.each  do |p|
                  %li.gallery_list{ :id => 'entry_' + p.id.to_s }
                    .left_column
                      = check_box_tag "designs_ids[]", p.id, false, :class => "chose_data"
                      %a.group{:href => p.design_url(:original) }
                        =image_tag(p.design_url(:_300px), {:title => p.title, :width => '300px', :height => '225px' }) 
                      .info    
                        %br  
                        ="#" + p.entry_no.to_s +  " - " +  p.title 
                        %ul
                          -if p.withdrawn? 
                            %li 
                              Design is withdrawn
                          %li 
                            Designer :
                            =link_to p.owner.user_name, admin_users_profile_path(p.owner) if p.owner
                          %li
                            Rating :
                            =p.rating
                          %li
                            =link_to "Download File", p.design_url(:original)
                          -if p.view_in_showcase == true
                            =link_to "Remove from top", showcase_admin_project_path(:id => p.project_id, :content_id => p.id)
                          -else  
                            =link_to "Add to top", showcase_admin_project_path(:id => p.project_id, :content_id => p.id)
                          %li
                            = link_to "Delete", content_destroy_admin_project_path(:id => p.project_id, :content_id => p.id, :page => params[:page]) 
4

1 に答える 1

1

レール内のform_tagおよびform_forヘルパーは、form_forと同じようにform_tagを使用して実行できます。

2つの異なる送信ボタンで単一のフォーム(form_tag)を使用できます。フォームを送信すると、 params [:commit]を使用して、どの送信ボタンがクリックされたかをコントローラーのアクションで確認できます。これに基づいて、タスクを実行できます。

例えば:

 <%= submit_tag 'Delete All', :name => 'delete_all' %>
 <%= submit_tag 'your other submit', :name => 'other_submit' %>

 if params[:delete_all] #in controller
   #do something
 elsif params[:other_submit]
   #do something
 end

 or

# if you don't want to give name attribute
 commit_action = params[:commit].gsub(' ', '_').downcase
 if commit_action.eql? 'delete_all'
   #do something
 elsif commit_action.eql? 'other_commit'
   #do something
 end 

form_forは、フォームにモデル属性を認識させる場合に使用されます。それ以外は通常の形です。form_tagは基本的なフォームです。

于 2013-01-29T15:05:53.373 に答える