我正在使用JavaScript将用户输入转换为一个看起来像哈希数组的String,并将其传递给Rails表单中的隐藏字段.即像这样的东西传递给我的控制器:
<input id="UserHash" name="UserHash" type="hidden" value="[{ :payer_id => 1, :amt => 90.00}, { :payer_id => 2, :amt => 80.00}, { :payer_id => 4, :amt => 20.00}]">
我正在使用eval(params [:UserHash])把它变成一个我可以使用的哈希.我是否完全通过使用eval()来破坏安全性,如果是这样,有没有办法可以检查传递的字符串是否为哈希数组?关于我正在做的任何意见将不胜感激.我使用JS传递哈希数组的原因是因为我的表单收集了有关可变长度集合(一组付款人的变量)的数据.
解决方法:
您最好的选择是使用JSON.
这正是JSON设计的场景.在Javascript中创建一个JSON字符串,并在Ruby中解析它
require 'json'
string = '[{"payer_id":1,"amt":90.0},{"payer_id":2,"amt":80.0},{"payer_id":4,"amt":20.0}]'
data = JSON.parse(string)
它会将你的字符串变成一个哈希数组.
注意,如果您希望键是符号,请使用
data = JSON.parse(string,:symbolize_names=>true)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。