我使用Markio Gem解析了一个Netscape书签文件,我试图将文件中的书签导入我的名为Bookmark的模型中。
当我导入文件时,我没有收到任何错误。它告诉我书签已经导入,但它没有显示出来。
如何从使用Markio解析的文件中正确创建书签?
My Bookmark字段是title和href,与Markio所说的相符。
模型
def self.import(file)
Markio.parse(file.path) do |bookmark|
Bookmark.create(title: bookmark.title, href: bookmark.href)
end
end
控制器
def import
Bookmark.import(params[:file])
redirect_to root_url, notice: "Bookmarks imported."
end
查看
<%= form_tag import_bookmarks_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import" %>
<% end %>
我正在尝试导入的书签文件
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<DL>
<p>
<DT><A HREF="http://www.google.com/">Google</A>
<DT><A HREF="http://www.youtube.com/">Youtube</A>
</p>
</DL>
修改 不太确定发生什么事情显然Markio并没有解析像它应该说的那样。这是导轨控制台在导入文件时所说的内容。它并没有像它所说的那样返回一系列书签。这就是它所做的一切,然后重定向到我的root_url。
Parameters: {"utf8"=>"✓", "authenticity_token"=>
"DAAu8486RreHqnFgUbDnh3/LfQcyvQxRLtqVqFAiQHNWgpZvhZgMBki5bY3IFIWwV
/m8aAGQ6FJywqvjuobB7w==", "file"=>#
<ActionDispatch::Http::UploadedFile:0x007ffe0434af58 @tempfile=#
<Tempfile:/tmp/RackMultipart20150608-26033-vs4o71.html>,
@original_filename="bookmarks_6_6_15.html", @content_type="text/html",
@headers="Content-Disposition: form-data; name=\"file\";
filename=\"bookmarks_6_6_15.html\"\r\nContent-Type: text/html\r\n">,
"commit"=>"Import"}
答案 0 :(得分:0)
正如我在评论中指出的,Markio::parse
返回一个数组。
您将不得不迭代元素并为每个元素创建Bookmark
。
def self.import(file)
Markio.parse(file.path).each do |bookmark|
Bookmark.create(title: bookmark.title, href: bookmark.href)
end
end
不是我在第2行添加的.each
。