我有一个市场应用程序,允许用户上传带有产品列表的csv文件。其中一个字段是描述字段。我想允许用户在csv描述字段中上传html标签,并希望rails在加载时处理html。如何包装下面的描述字段来做到这一点?
有没有办法可以限制哪些标签可以使用?我只想允许基本的格式化标签。
我的导入方法如下:
require 'csv'
require 'open-uri'
def self.import(file, userid)
CSV.foreach(file.path, headers: true, skip_blanks: true) do |row|
listing_hash = {:name => row['Product title'], :description => row['Description'], :sku => row['Product_id'],
:price => row['Price'], :category => row['Category'], :inventory => row['Quantity in stock'],
:userid => userid}.tap do |list_hash|
list_hash[:image] = URI.parse(row['Image']) if row['Image']
list_hash[:image2] = URI.parse(row['Image2']) if row['Image2']
list_hash[:image3] = URI.parse(row['Image3']) if row['Image3']
list_hash[:image4] = URI.parse(row['Image4']) if row['Image4']
end
listing = Listing.where(sku: listing_hash[:sku], userid: listing_hash[:userid])
if listing.count == 1
listing.first.update_attributes(listing_hash)
else
Listing.create!(listing_hash)
end
end # end CSV.foreach
end # end self.import(file)
答案 0 :(得分:1)
最简单的方法是清理描述,以确保只接受安全的标签和属性。
sanitize(row['Description'])
如果你想自己指定标签,你也可以这样做。
sanitize(row['Description'], tags: %w(p h1), attributes: %w(id class))
查看the rails sanitize helper文档以获取更多选项。
或者,如果您不在rails应用程序之外或无法访问视图帮助程序,则可以使用rails-html-sanitizer gem。文档非常简单。