在我的一种观点中,我有以下代码:
<%= f.label :default_theme %>
<%= f.text_area(:default_theme, :value => "How do we fill this with a long blob?") %>
我想预先填充文本区域,但是有一个非常长的超过 160 行 xml 的 blob。做这个的最好方式是什么?我知道我可以将其作为一个值填写,但这似乎是一种非常可怕的方式。
在我的一种观点中,我有以下代码:
<%= f.label :default_theme %>
<%= f.text_area(:default_theme, :value => "How do we fill this with a long blob?") %>
我想预先填充文本区域,但是有一个非常长的超过 160 行 xml 的 blob。做这个的最好方式是什么?我知道我可以将其作为一个值填写,但这似乎是一种非常可怕的方式。
我认为您应该使用 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)
您还询问这是否应该在模型中而不是控制器中。这取决于:
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):如果此文件与任何模型无关,您可以将其委托给控制器。