2012-07-17 84 views
1

这是我第一次序列化。我在客户端序列化了一组带有jQuery的复选框,并将其放入一个隐藏元素中,然后提交表单。现在在服务器端,我想反序列化成一个我可以使用的数组。这是我的客户端的字符串。Rails 3反序列化阵列

someArray%5B%5D=value0&someArray%5B%5D=value1 

在Rails 3,我想获得一个数组,看起来像:

["value0", "value1"] 

谢谢!

回答

0

对于序列化我想出了一些东西,我有一段时间在生产中工作。假设我已经有了一款带有3种不同类型小工具的汽车模型。 (让我们假设我不想在DB 3场):

在数据库

必须在现场命名为小玩意TEXT(THS是非常重要的)

在Car.rb

serialize :gadgets 
attr_accessible :alarm, :ac, :tires 
ALARM = 0; 
AC = 1; 
TIRES = 2; 

# this is the getter for alarm 
def has_alarm 
    if self.gadgets.nil? 
    return 0 
    else 
    if self.gadgets[ALARM].nil? 
     return 0 
    else 
     return self.gadgets[ALARM] 
    end 
end 

# this is the setter for alarm 
def has_alarm=(value) 
    self.gadgets = Array.new if self.gadgets.nil? 
    self.gadgets[ALARM] = value 
end 

# getter 
def has_ac 
    if self.gadgets.nil? 
    return 0 
    else 
    if self.gadgets[AC].nil? 
     return 0 
    else 
     return self.gadgets[AC] 
    end 
end 

# setter 
def has_ac=(value) 
    self.gadgets = Array.new if self.gadgets.nil? 
    self.gadgets[AC] = value 
end 

... 

在_form.rb

<%= f.check_box :has_alarm %> I want alarm in my car 
<%= f.check_box :has_ac %> I want AC in my car 
<%= f.check_box :has_tires %> I want deluxe tires in my car 

我希望你不要有这些领域后进行搜索......

2

如果您将它们作为典型的发布参数提交给您的请求,机架将自动解析这些值。例如:

curl http://yoursite.com -d "array[]=somevalue&array[]=othervalue" 

这将随后可作为应用程序内params[:array],含有指定的值的两个元素。