1

ファイルの中身を読み込んでsmtpでメールを送るRubyスクリプトを書いてみました。ファイルの内容は次のとおりです。

+3456|0|2013-04-16|2013-04-19
+3456|0|2013-04-16|2013-05-19

メールを送信するための私のコードは次のとおりです。

content = File.read(file_name)   
message = << MESSAGE_END   
From: from@localdomain.com
To: to@localdomain.com
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP e-mail test
Body
**HTML CODE to display the table with rows equal to the number of records in the file**
MESSAGE_END

Net::SMTP.start('localhost') do |smtp| 
  smtp.send_message message, 'from@localdomain.com','to@localdomain.com'
end

今私の問題は、ファイル内のレコード数に等しい行と列を持つテーブルを作成するためのhtmlコードを作成する方法です(ファイル内のレコードはそれに応じて変化するため)? ファイル内のレコードは常に '|' です。分離した。

4

2 に答える 2

1

content_tagヘルパーとString#splitを使用できます。例えば:

def row_markup(row)
  content_tag(:tr) do
    row.map{ |elem| content_tag(:td, elem) }.reduce(:+)
  end
end

def table_markup(rows)
  content_tag(:table) do
    rows.map{ |row| row_markup(row.split("|")) }.reduce(:+)
  end
end

それから電話する

table_markup(read_data_from_file.split("\n"))
于 2013-04-23T07:17:57.917 に答える
0

入力ファイルが にあると仮定すると./input.txt、次のようなことができます。

require 'builder'

html = Builder::XmlMarkup.new
html.table do
  File.open('./input.txt', 'r').each_line do |line|
   html.tr do
      line.chomp.split('|').each do |column|
        html.td column
      end
    end
  end
end

message << html.to_html
于 2013-04-23T07:27:37.093 に答える