【问题标题】:Rails modifies input field as I don't want toRails 修改输入字段,因为我不想
【发布时间】:2013-04-17 11:14:15
【问题描述】:

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

serialize :source, Array

默认情况下,输入字段在您加载页面时在其中包含“[]”符号。

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

真的很烦,请帮帮我。

【问题讨论】:

    标签: ruby-on-rails serialization


    【解决方案1】:

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

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

    class User < ActiveRecord::Base
      serialize :preferences
    end
    

    我想,您认为您的观点类似于 &lt;%= @my_model.source %&gt;

    现在,如果您从模型中删除 serialize :source, Array@my_model.source 的类型是字符串,您的视图会输出一个空字符串(无)。

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

    真的很烦,请帮帮我。

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

    • 应该 source 是一个字符串,删除 serialize :source, Array 并开心
    • 如果source 是一个数组,请重写您的视图以输出遍历其元素的数组。例如:

      <%- @my_model.source.each do |v| -%>
          <li><%= v %></li>
      <%- end -%>
      

    【讨论】:

    • 谢谢...我需要用户输入字符串,rails 将其转换为数组。刚刚添加了另一列,它是序列化的,从源中获取输入并保存为数组
    猜你喜欢
    • 2016-10-04
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2018-01-17
    相关资源
    最近更新 更多