Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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 如何在Rails中用长blob预先填充文本区域?_Ruby On Rails_Text_Blob_Erb - Fatal编程技术网

Ruby on rails 如何在Rails中用长blob预先填充文本区域?

Ruby on rails 如何在Rails中用长blob预先填充文本区域?,ruby-on-rails,text,blob,erb,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?") %> “我们如何用一个长长的斑点填充它?”)%> 我想预先填充文本区域,但是有一个非常长的blob,包含160多行xml。最好的方法是什么?我知道我可以把它作为一个值来填写,但这似乎是一种非常可怕的做法

在我的一个观点中,我有以下代码:

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

“我们如何用一个长长的斑点填充它?”)%>

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

我认为应该使用XML读取器库将长消息加载到共享变量
@default\u theme\u content
中,例如:

def index
  @default_theme_content = MyXMLReader.read('path/to/xml/file.xml')
  # etc.
然后在您的视图中使用它:

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

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

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

class Theme < ActiveRecord::Base
  # etc.

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

2):如果此文件与任何模型都不相关,则可以将其委托给控制器。

在控制器中,使用XML读取器加载“长消息”,将其放入共享变量
@default\u theme\u content
,然后为文本区域调用它:
f.text\u区域(:default\u-theme,:value=>@default\u-theme\u-content)
Ah我明白了。如果希望在模型中而不是控制器中这样做,您会更愿意吗?@MrYoshiji我喜欢这样:)
def index
  @default_theme_content = Theme.default_theme_content
  # etc.