2

以下に示すように、ユーザー入力を受け入れる「ストリーム」モデルに 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を生成できますが、このファイルをローカルではなくデータベースに直接保存したくありません。どうすればよいですか? これまで、ペーパークリップを使用して「ストリーム」モデル(xmlファイルを保存する場所)でファイル関連の列を生成しようとしましたが、その場でファイルを生成してデータベースに保存する方法に固執しました。

4

1 に答える 1

1

xml コンテンツを文字列として保存できます。

したがって、レール移行を実行して、文字列列をテーブルに追加します。

rails g model UserContent xml:string

次に、そこに文字列として保存します。

uc = UserContent.create(:xml => builder.to_xml)
于 2012-05-23T19:47:57.130 に答える