`
jackdraw
  • 浏览: 55440 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于 构建复杂结构的params[借用swingliner的文章]

阅读更多

RHTML代码:
名字:

电话:

电话:

地址:

名字:

电话:

电话:

地址:

当填写上面8行input文本框的值为下列值时:
name1
phone11
phone12
address1
name2
phone21
phone22
address2

rails把参数构造成:
Parameters: {"commit"=>"submit",
"person"=>[{"name"=>"name1",
"phone"=>[{"item"=>"phone11"}],
"address"=>"address1"},
{"name"=>"name2",
"phone"=>[{"item"=>"phone12"}],
"address"=>"address2"},
{"phone"=>[{"item"=>"phone21"}]},
{"phone"=>[{"item"=>"phone22"}]}
]
}

但我希望的是:
Parameters: {"commit"=>"submit",
"person"=>[{"name"=>"name1",
"phone"=>[{"item"=>"phone11"},{"item"=>"phone12"}],
"address"=>"address1"},
{"name"=>"name2",
"phone"=>[{"item"=>"phone21"},{"item"=>"phone22"}],
"address"=>"address2"}
]
}
我应该怎样写文本框中的name,才能让rails构造出我想要的合适结构的参数?
谢谢!

test.png
 描述:  
 文件大小:  2 KB
 看过的:  文件被下载或查看 0 次

test.png
上面是在swingline中的一个问题,刚好我也在找这个问题,刚学所以对于这个问题rails是怎么来处理的,有些奇怪
找了一些资料,相对来说比较少,在new中好像可以通过他建数组来决定这里面这个对像的值,但我试了一下,总感有些问题,后面发现可以这样子处理

ava 代码

  1.     
  2.   
  3. "new_items[][item_id]" type="text" value="1" /> "new_items[][oper_id]" type="text" value="4" /> "new_items[][quant]" type="text" value="1" />    
  4.   
  5. "new_items[][item_id]" type="text" value="1" /> "new_items[][oper_id]" type="text" value="4" /> "new_items[][quant]" type="text" value="1" />    
  6.   
  7.   
  8.     
当form是上面这种形式命令的时候我们得到的参数会是如下形式

"new_items"=>[

{

"item_id"=>"1", "oper_id"=>"4", "quant"=>"1"

}, {

"item_id"=>"1", "oper_id"=>"4", "quant"=>"1"

}

]

看起来好像是一个hash,实际上也是,看起来好像就可以解决上面的问题了,用rails的标签,我们只要能生成符合上面的标签 就可以了

当然你可以让这些重复的代码自动化只要在你的

controller中的new代码中增加下面这段代码

     @phones= Array.new
    3.times do
      @phones<< Phone.new
     end

然后在你的视图上加上

<!---->

java 代码
  1. <br />   
  2.  <% @phones.each do |phone| %>   
  3.    <%= text_field_tag ("phone[][tel]""""size" => "5") %>   
  4.    <%= text_field_tag ("phone[][mobile]""""size" => "5") %>   
  5.    <%= text_field_tag ("phone[][home]""""size" => "5") %>   
  6.    <br />   
  7.    ------------------------------------------   
  8.    <br />   
  9.   <% end %>  

   

  <!---->

或者更直接一点

 如果有更好的办法一定要给我留言,

 

分享到:
评论
1 楼 jackdraw 2007-07-10  
不过有一点疑问,如果他只添了一行,而下一行为空的时候进行保存的时候不知道怎么样来排除为空的的phone的hash值
比如phone[{

"item_id"=>"1", "oper_id"=>"4", "quant"=>"1"

},
"item_id"=>"", "oper_id"=>"", "quant"=>""
]
把第二条的值怎么排除掉用什么样的方式比较好,是不是可以在form提交的时候进行处理,如果为空就不让这个值给过来,还是在params中进行处理

相关推荐

    Console之params关键字

    这使得我们可以构建更复杂的控制台应用程序,例如接收和处理用户输入的字符串数组: ```csharp static void PrintStrings(params string[] strings) { Console.WriteLine("打印的字符串是:"); foreach (string ...

    junit-jupiter-params-5.7.2-API文档-中文版.zip

    赠送jar包:junit-jupiter-params-5.7.2.jar; 赠送原API文档:junit-jupiter-params-5.7.2-javadoc.jar; 赠送源代码:junit-jupiter-params-5.7.2-sources.jar; 赠送Maven依赖信息文件:junit-jupiter-params-...

    winform 方法参数 params源码

    在这个特定的资源包“winform 方法参数 params”中,我们很可能会找到关于如何在WinForm应用程序中使用`params`关键字的源代码示例。 `params`关键字在C#中是一个非常有用的特性,它允许方法接收可变数量的参数。...

    微信小程序接口封装、原生接口封装、request、params封装

    在微信小程序开发中,接口封装是一项重要的工作,它能够提高代码的可读性、可维护性和复用性。本文将详细讲解微信小...因此,在微信小程序开发中,我们应该重视接口和方法的封装,构建出结构清晰、易于扩展的代码库。

    params的总结

    本篇文章将详细总结`params`的相关知识点,帮助你深入理解其含义和应用。 1. **函数参数(Function Parameters)** 在大多数编程语言中,`params`通常指的是函数或方法的输入值,即函数执行任务时所需的数据。这些...

    junit-jupiter-params-5.5.2-API文档-中文版.zip

    赠送jar包:junit-jupiter-params-5.5.2.jar; 赠送原API文档:junit-jupiter-params-5.5.2-javadoc.jar; 赠送源代码:junit-jupiter-params-5.5.2-sources.jar; 赠送Maven依赖信息文件:junit-jupiter-params-...

    jquery.params.js页面带参数跳转插件

    `jquery.params.js` 是一个基于 jQuery 的小型插件,它主要功能是帮助开发者在进行页面跳转时方便地处理和传递参数。这个插件对于构建动态Web应用非常有用,特别是那些需要在URL中携带大量数据或者需要在不同页面...

    jquery.params.js

    jquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery.params.jsjquery....

    junit-jupiter-params-5.8.0-M1-API文档-中文版.zip

    赠送jar包:junit-jupiter-params-5.8.0-M1.jar; 赠送原API文档:junit-jupiter-params-5.8.0-M1-javadoc.jar; 赠送源代码:junit-jupiter-params-5.8.0-M1-sources.jar; 赠送Maven依赖信息文件:junit-jupiter-...

    junit-jupiter-params-5.8.2-API文档-中文版.zip

    赠送jar包:junit-jupiter-params-5.8.2.jar; 赠送原API文档:junit-jupiter-params-5.8.2-javadoc.jar; 赠送源代码:junit-jupiter-params-5.8.2-sources.jar; 赠送Maven依赖信息文件:junit-jupiter-params-...

    精典源码Delphi144:Delphi演示Params属性如何使用的小例子.rar

    本示例代码提供了关于如何使用Params属性的一个详细解释和实际应用。Delphi是 Borland 公司开发的一种面向对象的可视化集成开发环境(IDE),以其高效、灵活和强大的功能深受程序员喜爱。 首先,我们来理解什么是...

    plg_slideshowck_params_1.2.1_j25.zip

    在Joomla内容管理系统中,幻灯片组件是构建动态、吸引人的网站界面的重要工具。其中,Slideshow CK是一款非常受欢迎的免费幻灯片模块,它提供了丰富的功能和自定义选项,能够帮助用户创建出专业级别的视觉展示。然而...

    Delphi演示Params属性如何使用的小例子..rar

    在Delphi编程环境中,Params属性是一个非常重要的概念,它主要用于传递命令行参数或者动态参数到应用程序中。这个属性是TApplication类的一个成员,TApplication是Delphi中的核心应用程序类,负责管理应用程序的生命...

    前端开源库-get-params

    在前端开发中,获取URL参数或者函数参数是一个常见的需求,特别是在构建动态应用或者处理API请求时。"get-params"这个开源库就是为了解决这个问题而设计的,它专门用于从URL查询字符串或函数参数中提取和解析参数。...

    Ruby-Jbuilder通过一个构建式DSL创建JSON结构

    Jbuilder是一个Ruby gem,它提供了一个简洁的Domain Specific Language (DSL),让开发者能够通过一种构造式的语法来构建复杂的JSON对象,避免了手动拼接字符串的繁琐。这个DSL使得编写和维护JSON序列化代码变得更加...

    jquery.params.js传值插件下载

    在实际应用中,除了基本的获取和设置参数,还可以结合其他jQuery方法和事件,实现更复杂的功能。例如,可以监听页面加载或路由改变事件,实时更新页面内容;或者在表单提交时动态添加参数到URL,实现无刷新的页面...

    wms-Params自动生成get-set方法

    wms-Params自动生成get-set方法

Global site tag (gtag.js) - Google Analytics