2013-05-13 41 views
0

我需要有一個check_box出於多種目的。 例如:我有一個文件列表。用戶可以選擇其中的一些來刪除或分析。Ruby on Rails:一個check_box幾個submit_tag

我有以下代碼,但它只接受一個submit_tag「刪除選定的」。

<% if @files%>  
<%= form_tag destroy_multiple_files_path, method: :delete do %> 
<%= submit_tag "Delete selected" %> 
    <% @files.each do |file| %> 
    <% if (arraydb.file=="no") %> 
     <p><td> <%= check_box_tag "files[]", file.id %></td><%= file.name %></p>  

    <% else %>  

    <div class="my_profile_info">  
    <p><td> <%= check_box_tag "files[]", file.id %></td> <%= file.name %></p>   

    <td class="Info"> 
    <a href="<%=file.info%>" target ="_blank" class= "btn btn-mini btn-info">Info</a> 
    </td> 

    </div> 

    <% end %> 
    <%end%> 

<%end%> 
<%else%> 

<%end%> 

我想要submit_tag「分析」以及。 我嘗試過這樣的事情,但當然它不起作用。

<% if @files%>  
    <%= form_tag destroy_multiple_files_path,analyse_multiple_files_path method: :delete,method:post do %> 
    <%= submit_tag "Delete selected" %> 
    <%= submit_tag "Analyse" %> 
     <% @files.each do |file| %> 
     <% if (arraydb.file=="no") %> 
      <p><td> <%= check_box_tag "files[]", file.id %></td><%= file.name %></p>  

     <% else %> 
.... 

routes.rb中:

resources :files do 
     collection do    
     delete 'destroy_multiple'  
     end 
    end 

控制器:

def destroy_multiple   

     @files = File.find(params[:files])  
     @files.each do |item|   
      item.destroy 
     end  

    end 

預先感謝。

回答

0

這個工作對我來說:

<%= form_tag destroy_multiple_files_path, method: :get do %> 
    <%= submit_tag "Delete selected", :name => 'delete' %> 
    <%= submit_tag "Analyse", :name => 'analyse' %> 

控制器:

if params[:commit] == 'Delete selected' 
    # delete things 
elsif params[:commit] == 'Analyse' 
    # analyse things 
end 

的routes.rb:

resources :files do 
     collection do    
     get :destroy_multiple  
     end 
    end 
0

可以確實多個提交按鈕,你就必須給他們的名字:

<%= submit_tag "Delete selected", :name => 'delete' %> 
<%= submit_tag "Analyse", :name => 'analyse' %> 

您可以再檢查一下commit PARAM包含了控制器和相應的行動:

if params[:commit] == 'delete' 
    # delete things 
elsif params[:commit] == 'analyse' 
    # analyse things 
end 

表格的其餘部分將照常提交。

+0

如果我通過一個變量:名稱,然後我要趕在它一個控制器以及params [:name],不是嗎?我已經嘗試過你的變體和變體:name,而不是:commit。它不會刪除任何東西。它可以連接刪除我的路線中的「消滅多個」?我更新了我的問題 – Tonja 2013-05-13 14:54:45