如何在Rails中预填充长blob的文本区域?

时间:2013-08-20 21:26:33

标签: ruby-on-rails text blob erb

在我的一个观点中,我有这段代码:

<%= f.label :default_theme %>
<%= f.text_area(:default_theme, :value => "How do we fill this with a long blob?") %>

我想预先填充文本区域,但是有超过160行的xml。做这个的最好方式是什么?我知道我可以把它作为一个值填充,但这似乎是一种非常可怕的方式。

1 个答案:

答案 0 :(得分:1)

我认为您应该使用XML阅读器库将长消息加载到共享变量@default_theme_content中,例如:

def index
  @default_theme_content = MyXMLReader.read('path/to/xml/file.xml')
  # etc.

然后在您的视图中使用它:

f.text_area(:default_theme, :value => @default_theme_content)

您还询问是否应该在模型中而不是Controller中。这取决于:

1):如果您的文件与模型相关,如主题模型,并且应该作为用户的默认主题加载,那么你可以在模型中使用方法返回此文件:

class Theme < ActiveRecord::Base
  # etc.

  def self.default_theme_content
    MyXMLReader.read('path/to/xml/file.xml')
  end

在控制器中使用它:

def index
  @default_theme_content = Theme.default_theme_content
  # etc.

2):如果此文件与任何型号无关,您可以将其委托给控制器。