`

form中嵌套form可以通过js指定具体form提交。

阅读更多
在new对象之前先做需要数据的选择。以下是一个实现方法。


<% form_for(@cad_active) do |f| %>

<input  type="hidden" id= "stu_reg_infids" name= "stu_reg_infids" > 
<!--用来js接收form_remote_tag中的多选框数据-->

<% form_remote_tag  :url=>{:controller=>'active_search_stu'},:update=>'stus_all' do -%>
<table width="100%" class="edit view search">
<%=render :partial =>"/stu_reg_infs/find" %><!--其中含有查找的button-->
</table> 

<table width="100%" border="0" class="list view" id="stus_all">		
<!--返回一个带form_remote_tag的partial支持再次查找更新stus_all
其中带有多选框active[stu_reg_inf_ids]、和button、还有传递已有数据stu_reg_inf_ids(字符串集)的hidden。-->					
</table>	
		      
<% end %>

<%= button_to_function "保存", "check_feedback(this)" %>
<% end %>



<script type="text/javascript">
function check_feedback(form){
  var chkStatus1 = document.getElementsByName("active[stu_reg_inf_ids][]");
 	for (i = 0; i < chkStatus1.length; i++) {
 		if (chkStatus1[i].checked==true){
 		document.getElementById('stu_reg_infids').value=document.getElementById('stu_reg_infids').value+","+chkStatus1[i].value 
 		}
 	}
document.forms[1].submit();
      return true;
}
</script>

CONTROLLER:

def active_search_stu
    cad_students_search#多条件查询方法,返回查询结果集。
    @stu_reg_inf_ids=[]
    if params[:stu_reg_inf_ids]&&params[:stu_reg_inf_ids]!=[]#上次搜索的记录
    @students_ids=[]    
     students_ids=params[:stu_reg_inf_ids].split(",")
    for students_id in students_ids
      student_id=students_id.to_i
      if student_id>0
        @students_ids<<students_id
      end
    end
    for stu_reg_inf in @stu_reg_infs
      if @students_ids.include?stu_reg_inf.id.to_s#查询记录已包含本次查询的某一对象
        @students_ids.delete stu_reg_inf.id.to_s#删除上次记录保留本次记录
      end
    end
     @studentsids=[]
       if params[:active]
       if params[:active][:stu_reg_inf_ids]
      for stu_reg_inf_id in @students_ids 
        if params[:active][:stu_reg_inf_ids].include?(stu_reg_inf_id.to_s)#上次查询 对象出现在本次打对勾的集体当中          
           @studentsids<<stu_reg_inf_id    
        end
      end
      @students_ids=@studentsids#新的赋值
      end
      else#此次提交为空
          @students_ids=[]#从数组中删除,清空数组
      end
      if @students_ids!=[]
      for stu_reg_inf_id in @students_ids
      @stu_reg_inf_ids<<stu_reg_inf_id  
      stu_reg_inf=StuRegInf.find(stu_reg_inf_id)
      @stu_reg_infs<<stu_reg_inf 
      end 
      end  
     @stu_reg_infs = @stu_reg_infs.paginate( :page => params[:page],:per_page =>100, :order =>'convert(created_at using gbk)desc',:order => 'convert(name using gbk)')     
    end    
    for stu_reg_inf in @stu_reg_infss#本次搜索记录
      @stu_reg_inf_ids<<stu_reg_inf.id
    end        
      @stu_reg_infids=""
      for stu_reg_inf_id in @stu_reg_inf_ids
      @stu_reg_infids=@stu_reg_infids+","+stu_reg_inf_id.to_s
      end
    render :partial=>"/stu_reg_infs/search"
  end

分享到:
评论

相关推荐

    使用JQuery实现从JSON对象转换为form提交数据

    在前端开发中,有时我们需要将JSON格式的数据转换成表单(form)的格式进行提交,以便于服务器端处理。在JavaScript的世界里,jQuery库提供了一种便捷的方式来进行这样的转换。本篇文章将深入探讨如何利用jQuery从...

    C# form中嵌套flash

    在C# WinForms应用程序中嵌入Flash内容可以为用户提供丰富的媒体体验,比如动态展示、交互式界面等。本文将深入探讨如何在C# Form中实现这一功能,主要涉及以下知识点: 1. **ActiveX控件**: C#本身不直接支持...

    C# 不同Form之间值的传递

    这种方法可以确保数据在Form实例间的一对一传递,且不会影响其他实例,但要注意不要陷入复杂的窗口嵌套。 3. 构造函数 除了窗口调用,还可以直接在创建新Form实例时通过构造函数传递数据。例如: ```csharp // 在...

    基于form-data请求格式详解

    JavaScript中,XMLHttpRequest Level 2引入了FormData接口,允许开发者使用JavaScript来构建键值对的集合,并模拟表单提交。使用FormData对象,开发者可以更方便地组织文件和文本数据进行上传。例如,使用fetch API...

    C# WinForm 在Panel中添加Form 教程+源码

    提供的源码文件"**C# WinForm在Panel中添加Form.txt**"和"**panel 放窗体+清空.txt**"应该包含了实现这一功能的具体代码,读者可以结合本文档的说明进行学习和实践。 总的来说,这种技术在开发复杂的桌面应用时非常...

    在delphi 11.3 Form窗体的panel 中嵌入 Fmx窗体

    在Delphi 11.3开发环境中,开发者经常会遇到需要在一个传统的VCL(Visual Component Library)窗体上嵌入...通过这种方式,开发者可以逐步迁移旧的VCL项目到跨平台的FMX框架下,或者在需要的时候混合使用两种技术。

    Struts常见的Form(一)

    3. **嵌套Form Bean**: 在复杂的表单中,可能会有嵌套的表单结构,即一个表单内包含其他表单。这种情况下,可以使用嵌套Form Bean。每个嵌套的Form Bean都有自己的属性,可以通过点号`.`来访问。例如,一个用户表单...

    ASP.NET中Form表单不可以嵌套使用

    这一规则对于初学者来说可能会感到困惑,因为他们可能习惯于在ASP中创建多个嵌套的表单来处理不同的数据提交。 首先,必须理解,当我们在***中谈论表单嵌套问题时,实际上是指在同一个HTML页面中,一个`&lt;form&gt;`标签...

    form调用form

    在C#编程中,"form调用form"指的是在一个窗体(Form)中启动或与另一个窗体进行交互的操作。这种技术通常用于构建多窗体应用程序,其中不同的窗体负责不同的功能区域。以下是对这个主题的详细解释: 1. **窗体间的...

    使用AJAX提交Form表单

    1. 创建XMLHttpRequest对象:在JavaScript中,我们首先需要创建一个XMLHttpRequest对象,这通常是异步的,意味着它不会阻塞页面的其他操作。 ```javascript var xhr = new XMLHttpRequest(); ``` 2. 设置回调函数...

    用Javascript将form所有内容序列化和反序列化的例子。

    在JavaScript中,没有内置的方法直接对表单数据进行序列化和反序列化,但我们可以使用以下方法实现: 1. **序列化表单数据** 一个简单的序列化函数可以遍历表单的所有元素,收集它们的`name`属性和`value`属性,...

    Python关于 Django 的web- Form 表单验证

    Django Form允许自定义验证规则,通过在Form类中定义`clean_&lt;field_name&gt;`方法。这个方法会在所有字段验证通过后执行,可以用来检查更复杂或跨字段的验证逻辑。 4. **错误处理** 当表单数据未通过验证时,Django...

    【JavaScript源代码】Vue模仿ElementUI的form表单实例代码.docx

    - 为了使`FormItem`组件能够正确地识别当前校验的是哪个字段,可以通过`prop`属性来指定字段名,然后在`FormItem`组件中使用该名称来从`Form`组件传递过来的规则(`rules`)中获取相应的校验规则。 #### 五、总结 ...

    Ruby-Reform能够给你一个Form对象模型包含验证和嵌套设置

    通过定义嵌套的Form对象,你可以分别对每个子模型进行验证和处理,使得代码更加清晰。例如,如果你有一个用户模型,包含一个地址模型,你可以创建一个UserForm,其中包含一个AddressForm,这样就可以在一个表单中...

    vue 多级嵌套示范

    Vue.js 是一个流行的前端...具体到`dynamicForm.js`和`3层嵌套.txt`的实现,可能涉及到动态生成表单元素、递归组件设计以及复杂的组件通信。通过深入学习和实践这些概念,开发者可以构建出更加灵活和强大的Vue应用。

    ant-design-vue3.x的form表单爬坑.pdf

    现在,你应该使用数组的方式来指定嵌套字段的name属性,如`:name="[‘form’, index, ‘name’]"`。这种方式使得我们可以更灵活地处理动态生成的嵌套表单元素。然而,需要注意的是,官方文档并未明确指出name属性...

    sap scriptform 编程指南

    Form 可以嵌套其他 Form,以生成复杂的表单和报表。 1.2.1.1 修改 SAP Forms SAP Forms 可以根据需要进行修改,以满足不同的报表需求。修改 Form 可以通过添加、删除或修改组件来实现。 1.2.1.2 Forms:概念 ...

    使用form-create动态生成vue自定义组件和嵌套表单组件

    `form-create`还允许绑定事件处理器,这可以通过在组件规则中添加`on`属性实现。例如,可以添加一个点击事件处理函数: ```javascript let rule = [ { type: 'i-button', field: 'btn', props: { type: 'primary'...

    react-Unform是一个ReactJS表单库用于创建表单结构包含嵌套字段验证等等

    通过Unform,你可以轻松地处理表单的提交事件,并获取到所有字段的当前值。同时,提供了方便的方法来重置表单,清除所有字段的值。 ### 6. 自定义渲染与高阶组件 Unform允许开发者自定义渲染表单元素,通过使用`...

Global site tag (gtag.js) - Google Analytics