我需要有一个check_box用于多种目的。 例如:我有一个文件列表。用户可以选择其中一些进行删除或分析。
我有以下代码,但它只接受一个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“Analyze”。 我尝试过类似的东西但当然没用。
<% 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 :(得分: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
表格的其余部分将照常提交。
答案 1 :(得分: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