0

いくつかの目的のために、1 つの check_box が必要です。例: ファイルのリストがあります。ユーザーは、それらのいくつかを削除または分析するように選択できます。

私は次のコードを持っていますが、「選択した削除」というsubmit_tagを1つだけ受け入れます。

<% 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 %>
....

ルート.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

前もって感謝します。

4

2 に答える 2

0

実際、複数の送信ボタンを設定できます。名前を付けるだけです。

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

commit次に、コントローラーに含まれるパラメーターを確認し、それに応じて行動できます。

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

フォームの残りの部分は通常どおり送信されます。

于 2013-05-13T14:48:05.443 に答える