Разрешение пользователям загружать CSV, а затем я вывожу образец CSV для их проверки.С этим я хочу включить рядом с ним тип поля «предполагаемое» (String, Number и т. Д. - высокий уровень).
В настоящее время я использую:
Просмотр
<p>
<strong>Spec Sheet SAMPLE (Live Data):</strong>
<%#= image_tag url_for(@post.cover_photo) %>
<% preview_data = CSV.foreach(ActiveStorage::Blob.service.send(:path_for, @post.cover_photo.blob.key)).take(10) %>
<table style="width:50%">
<tr>
<% preview_data[0].each do |header| %>
<th><%= header %> </th>
<% end %>
</tr>
<% preview_data.drop(1).each do |row| %>
<tr>
<% row.each do |info| %>
<td><%= info %> <%= type_sense(info) %></td>
<% end %>
</tr>
<% end %>
</table>
</p>
Контроллер
def type_sense(content)
if content.is_a? Integer
return 'Number'
elsif content.is_a? String
return 'Text'
end
end
helper_method :type_sense
КакойЯ понимаю - технически все в массивах, создаваемых через CSV, является строками.
Я замечаю, что как только файл загружен, все в двойных кавычках, что, как я полагаю, превращает его в строку, несмотря на то, что он отображается как исходное значение.
Примечание Я понимаю, что некоторые вещи будут неправильно помечены как другие, но в этом тестовом примере я просто пытаюсь заставить его зарегистрировать 9 цифр как «целое число» и букв как «текст».