Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails 3反序列化数组_Ruby On Rails 3_Serialization - Fatal编程技术网

Ruby on rails 3 Rails 3反序列化数组

Ruby on rails 3 Rails 3反序列化数组,ruby-on-rails-3,serialization,Ruby On Rails 3,Serialization,这是我第一次连载。我在客户端序列化了一个带有jQuery的复选框数组,将其放入一个隐藏元素中,然后提交表单。现在在服务器端,我想反序列化到一个可以使用的数组中。这是我在客户端的字符串 someArray%5B%5D=value0&someArray%5B%5D=value1 在Rails 3中,我希望得到一个如下所示的数组: ["value0", "value1"] 谢谢 如果您将这些值作为典型post参数提交到您的请求,Rack将自动解析这些值。例如: curl http://y

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

 someArray%5B%5D=value0&someArray%5B%5D=value1
在Rails 3中,我希望得到一个如下所示的数组:

["value0", "value1"]

谢谢

如果您将这些值作为典型post参数提交到您的请求,Rack将自动解析这些值。例如:

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

这将在应用程序中以
params[:array]
的形式提供,其中包含两个指定值的元素。

对于序列化,我想出了一些方法,并在生产环境中工作了一段时间。 假设我有一个有3种不同类型小玩意的汽车模型。(假设我不需要数据库中的3个字段):

数据库中必须有一个名为gadgets的字段作为文本(这非常重要)

in 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
我想让我的车里有报警器
我想在车里装空调
我的车要豪华轮胎
我希望你以后不必按这些字段搜索