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 次 |
|
上面是在swingline中的一个问题,刚好我也在找这个问题,刚学所以对于这个问题rails是怎么来处理的,有些奇怪
找了一些资料,相对来说比较少,在new中好像可以通过他建数组来决定这里面这个对像的值,但我试了一下,总感有些问题,后面发现可以这样子处理
ava 代码
"new_items[][item_id]" type=
"text" value=
"1" />
"new_items[][oper_id]" type=
"text" value=
"4" />
"new_items[][quant]" type=
"text" value=
"1" />
"new_items[][item_id]" type=
"text" value=
"1" />
"new_items[][oper_id]" type=
"text" value=
"4" />
"new_items[][quant]" type=
"text" value=
"1" />
当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 代码
- <br />
- <% @phones.each do |phone| %>
- <%= text_field_tag ("phone[][tel]", "", "size" => "5") %>
- <%= text_field_tag ("phone[][mobile]", "", "size" => "5") %>
- <%= text_field_tag ("phone[][home]", "", "size" => "5") %>
- <br />
- ------------------------------------------
- <br />
- <% end %>
或者更直接一点
如果有更好的办法一定要给我留言,