【问题标题】:Save user input as xml file in the database in Rails在 Rails 的数据库中将用户输入保存为 xml 文件
【发布时间】:2012-05-30 08:41:18
【问题描述】:

我在“流”模型上有一个 form_tag,它接受用户输入,如下所示:

<%= form_tag('/generate_xml', :method=>'post') do %>
 <p>
 Content:<br />
   <%= text_field_tag "content" %>
 </p>
 <p>
   <%= submit_tag 'Submit' %>
 </p>
<% end %>

generate_xml 动作如下:

def generate_xml
 @content = params[:content]
 builder = Nokogiri::XML::Builder.new do |xml|
 xml.streams {
  xml.content {
   xml.name { xml.text @content }
  }
 }
 end

 file = File.new('dir.xml','w')
 file.puts builder.to_xml
 file.close
end

虽然我可以生成一个文件dir.xml,但我不想将此文件存储在本地,而是直接存储在数据库中。我该怎么做?到目前为止,我已经尝试使用回形针在“Stream”模型(我想在其中存储 xml 文件)中生成与文件相关的列,但我坚持如何动态生成文件并将其保存到数据库。

【问题讨论】:

  • 为什么不直接将其存储在数据库表的字段中?
  • @ipd :您的意思是将 xml 存储为字符串?因为 Rails 没有文件 ActiveRecord 数据类型
  • 是的,为什么不呢?请参阅下面的答案。

标签: ruby-on-rails database file save paperclip


【解决方案1】:

您可以将 xml 内容存储为字符串。

所以,做一个 Rails 迁移,将字符串列添加到您的表中。

rails g model UserContent xml:string

然后将其作为字符串存储在那里:

uc = UserContent.create(:xml => builder.to_xml)

【讨论】:

  • 谢谢。更正你的答案。应该创建模型的一个实例,即@usercontent=UserContent.new,并且您不能直接在模型本身上调用属性。
  • 哦。我写的时候一定是分心了,以更好的方式重写。
猜你喜欢
  • 1970-01-01
  • 2015-11-29
  • 2022-01-21
  • 2017-05-21
  • 2015-04-25
  • 2014-08-20
  • 2019-03-29
  • 2011-07-31
  • 2015-05-30
相关资源
最近更新 更多