在Rails中,文本无缘无故被截断

时间:2010-11-09 08:31:14

标签: ruby-on-rails

我在Rails中得到了这个文本域,我在编辑中输入了这个:

  

升降机09:00-00:45 - 6月中旬(最后   提升到顶部23:00,到其他   9月中旬24:00),09:30-23:45   (最终提升到22:30,到   其他楼层23:00),楼梯   09年6月中旬09:00-00:30(决赛   入场时间为24:00),09:30-18:30   6月中旬(最后入场时间18:00)

但是在节目中,它被截断了:

  

升降机09:00-00:45 - 6月中旬(最后   提升到顶部23:00,到其他   9月中旬24:00),09:30-23:45   (最终提升到22:30,到   其他楼层23:00),楼梯   09年6月中旬09:00-00:30(决赛   入场时间为24:00),09:30-18:30   6月中旬(最后一次)

当我再次返回编辑以检查它是否仍然存在时,它被截断了。我尝试了其他文字,也被截断了。是字符限制问题吗?

我的Rails应用中没有特殊代码可以导致此问题。我只使用了<%= sanitize @shop.operation_hours %>。即使我关闭sanitize,问题仍然存在。

2 个答案:

答案 0 :(得分:0)

您的文字已被截断为256个字符。

假设此数据存储在由数据库支持的模型对象中,我强烈怀疑这是由于数据库中的列长度造成的。标准“字符串”字段通常默认为256个字符。

尝试创建将列更改为“文本”类型的迁移:

class ChangeColumnToString < ActiveRecord::Migration
  def self.up
    change_column :table_name, :attribute, :text
  end

  def self.down
    change_column :table_name, :attribute, :string
  end
end

答案 1 :(得分:0)

>> "Lifts 09:00-00:45 mid-Jun-Aug (final ascension to top 23:00, to other levels 24:00),
   09:30-23:45 Sep-mid-Jun (final ascension to top 22:30, to other levels 23:00),
   Stairs 09:00-00:30 mid-Jun-Aug (final admittance 24:00), 09:30-18:30 Sep-mid-Jun
   (final adm".length
=> 255

您似乎已经使用operation_hours类型创建了string列,结果为varchar(255)。因此,当您将长字符串保存到数据库中时,它会被截断。您需要摆脱此约束(例如,将列类型更改为text