1

这真的很奇怪,但是当我添加我的模型时:

serialize :source, Array

默认情况下,输入字段在您加载页面的任何时候都有“ [] ”符号。

当我删除序列化时,它消失了。但是视图本身的代码没有被修改,所以我不知道如何删除这个括号。

真的很烦,请帮帮我。

4

1 回答 1

2

来自http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-serialize

Active Record 可以使用 YAML 序列化文本列中的任何对象。为此,您必须通过调用类方法序列化来指定它。这使得在不做任何额外工作的情况下存储数组、散列和其他不可映射的对象成为可能。

class User < ActiveRecord::Base
  serialize :preferences
end

我想,你认为你有类似的东西<%= @my_model.source %>

现在如果你serialize :source, Array从你的模型中删除,类型@my_model.source是字符串,你的视图输出一个空字符串(什么都没有)。

如果添加serialize :source, Array到模型中,则类型@my_model.source为数组。期间转换为字符串的空数组<%= @my_model.source %>正是您所看到的:[]

真的很烦,请帮帮我。

为了帮助你,我需要知道你到底想要存档什么。

  • 应该source是一个字符串,删除serialize :source, Array并快乐
  • 应该source是一个数组,重写您的视图以输出迭代其元素的数组。例如:

    <%- @my_model.source.each do |v| -%>
        <li><%= v %></li>
    <%- end -%>
    
于 2013-04-17T12:18:55.057 回答