Ruby on rails Ruby on Rails,提交带有3个复选框的标签
我需要的是Ruby On Rails以外的东西。 我有一个选择要删除或分析的特定文件的代码:Ruby on rails Ruby on Rails,提交带有3个复选框的标签,ruby-on-rails,checkbox,submit-button,Ruby On Rails,Checkbox,Submit Button,我需要的是Ruby On Rails以外的东西。 我有一个选择要删除或分析的特定文件的代码: <% if @files%> <%= form_tag what_to_do_files_path, method: :get do %> <%= submit_tag "Delete selected", :name => 'delete' %> <%= submit_tag "Analyse", :name => 'analyse' %&
<% if @files%>
<%= form_tag what_to_do_files_path, method: :get do %>
<%= submit_tag "Delete selected", :name => 'delete' %>
<%= submit_tag "Analyse", :name => 'analyse' %>
<% @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%>
控制器:
def what_to_do
method=params[:commit]
if method == 'Delete selected'
do smt
elsif method == 'Analyze'
do another thing
end
end
elsif method == "Analyze"
if params[:pictures]
do picture stuff
if params[:normalization]
do normalization stuff
params[:files].each do |file_id|
params[:file_options][:file_id].each do |option|
# do something according to "pics" or "info" etc..
end
end
我需要的是“分析”按钮的选项。像图片、信息、标准化、带有复选框的散点图。
所以,我选择了图片和标准化,并点击分析,所以只有这两个选项将继续进行。我不太确定如何将复选框包装到submit_标记
编辑
范例
选择选项复选框
规范化
照片
散点图
信息
选择文件复选框:
文件1
文件2
文件3
如果打开Firebug/Chrome inspector并查看在中进行任何选择后会发生什么,您可以看到他们发出GET请求并将选中复选框的值传递给服务器。这正是你能实现的 将所选复选框的值传递给服务器,然后根据该值处理服务器上的内容。传递给控制器的参数应显示所传递的值
小建议在继续时,您可以将提供文件详细信息的代码移动到模型中。这样,尽管您没有与数据库关联,但在此模型类中不继承ActiveRecord,但您仍然遵循MVC原则。如果打开Firebug/Chrome inspector,查看在中进行任何选择后会发生什么,您可以看到他们发出GET请求,并将选中复选框的值传递给服务器。这正是你能实现的 将所选复选框的值传递给服务器,然后根据该值处理服务器上的内容。传递给控制器的参数应显示所传递的值
小建议在继续时,您可以将提供文件详细信息的代码移动到模型中。通过这种方式,尽管您与数据库无关,但在这个模型类中不要继承ActiveRecord,但您仍然坚持MVC原则。我不能100%确定我是否理解您的意图,但这是我的理解: 您有一堆文件可以通过复选框选择,您还需要选项复选框将其他选项传递给分析操作 只需在表单标签中添加:
<%= check_box_tag "pictures", true %>
<%= check_box_tag "normalization", true %>
等等等等等等
params[:nameofcheckboxtag]将被设置为value second选项,在我的示例中,如果选中复选框,则为true,否则它将不存在。无论哪种方式,本例只处理选中的选项。我不能100%确定我是否理解您的意图,但这是我的理解: 您有一堆文件可以通过复选框选择,您还需要选项复选框将其他选项传递给分析操作 只需在表单标签中添加:
<%= check_box_tag "pictures", true %>
<%= check_box_tag "normalization", true %>
等等等等等等
params[:nameofcheckboxtag]将被设置为value second选项,在我的示例中,如果选中复选框,则为true,否则它将不存在。无论哪种方式,本例只处理选中的选项。我理解您的问题如下: 你有 文件1
图片我知道你的问题是这样的: 你有 文件1
图片对于您的案例,我认为您必须选择一组提交按钮文件/选项。你应该这样做: 控制器:
def what_to_do
method=params[:commit]
if method == 'Delete selected'
do smt
elsif method == 'Analyze'
do another thing
end
end
elsif method == "Analyze"
if params[:pictures]
do picture stuff
if params[:normalization]
do normalization stuff
params[:files].each do |file_id|
params[:file_options][:file_id].each do |option|
# do something according to "pics" or "info" etc..
end
end
视图:
希望有帮助!: 对于您的情况,我认为您必须选择一组提交按钮文件/选项。你应该这样做: 控制器:
def what_to_do
method=params[:commit]
if method == 'Delete selected'
do smt
elsif method == 'Analyze'
do another thing
end
end
elsif method == "Analyze"
if params[:pictures]
do picture stuff
if params[:normalization]
do normalization stuff
params[:files].each do |file_id|
params[:file_options][:file_id].each do |option|
# do something according to "pics" or "info" etc..
end
end
视图:
希望有帮助!: 我以前做过类似的事情。我们所做的基本上是使用javascript来更改隐藏标记的值 基本上,您为提交按钮设置了ID,并将其放入onClick事件中。我们通常使用JQuery,我想您也是,因为rails在大多数情况下都是打包的。但基本上在您的文档中。准备好了当他们单击“删除”按钮时,我将隐藏标记的值设置为“删除”,当他们单击“分析”按钮时,我将隐藏标记的值设置为“分析”。然后,在控制器中,当它出现时,只需检查隐藏标记名称的hte参数值。解释比编码容易。。。但事实证明,我现在正在编辑该文件,以便您可以查看:
<script>
jQuery(document).ready(function()
{
$('#unassign_button').click(function()
{
$('#action').val("unassign");
$('#action_form').submit();
});
$('#add_button').click(function()
{
$('#action').val("add");
$('#action_form').submit();
});
});
</script>
这意味着您可以查看commit参数以查看他们单击了哪个按钮…我以前必须执行类似的操作。我们所做的基本上是使用javascript来更改隐藏标记的值 基本上,您为提交按钮设置了ID,并将其放入onClick事件中。我们通常使用JQuery,我想您也是,因为rails在大多数情况下都是打包的。但基本上在您的文档中。准备好了当他们单击“删除”按钮时,我将隐藏标记的值设置为“删除”,当他们单击“分析”按钮时,我将隐藏标记的值设置为“分析”。然后在你的 控制器进入时,只需检查隐藏标记名称的hte参数值。解释比编码容易。。。但事实证明,我现在正在编辑该文件,以便您可以查看:
<script>
jQuery(document).ready(function()
{
$('#unassign_button').click(function()
{
$('#action').val("unassign");
$('#action_form').submit();
});
$('#add_button').click(function()
{
$('#action').val("add");
$('#action_form').submit();
});
});
</script>
这意味着您可以查看commit参数以查看他们单击了哪个按钮…问题是我不知道如何实现它,因此我不知道应该传递什么以引用submit_标记而不是file.id。问题是我不知道如何实现它,因此,我不知道应该传递给什么,以便引用submit_标记,而不是图片信息规范化的file.idno.checkbox和File1 File2 File3的checkbox。然后将只有2个复选框。在您的示例中,每个文件都有自己的复选框。因此,如果您有4个文件,那么所有文件都有一个复选框,每个文件都有一个额外的复选框,所以有5个复选框。我不需要这个。我需要一个复选框用于图片、信息、规范化、Scatterpoltsno.checkbox用于图片信息规范化和checkbox用于File1 File2 File3。然后将只有2个复选框。在您的示例中,每个文件都有自己的复选框。因此,如果您有4个文件,那么所有文件都有一个复选框,每个文件都有一个额外的复选框,所以有5个复选框。我不需要这个。我需要一个图片、信息、标准化的复选框,ScatterpoltsAlso现在我读得更深一点,如果你想系上按钮复选框按钮,你将使用上面相同的过程,但与你的复选框按钮,而不是隐藏标记。现在我读得更深一点,如果你想系上按钮复选框按钮,你将使用上面相同的过程,但与你的复选框按钮,而不是而不是隐藏的标签。我认为你的问题是,你在一个表单中有两个提交按钮,你想做不同的动作。如果可以的话,你应该更改标题。请看我的答案。我想你这里的问题是你在一个表单中有两个提交按钮,你想做不同的操作。如果可以的话,你应该更改标题。请看我的答案。