Ruby on rails 如何从Rails中导入的文件创建新帖子?
我已经用解析了一个Netscape书签文件,我正在尝试将文件中的书签导入名为Bookmark的模型中 当我导入文件时,我没有得到任何错误。它告诉我书签已经导入了,但是没有显示出来 如何从使用Markio解析的文件中正确创建书签 我的书签字段是title和href,它们与Markio所说的内容相匹配 模型 控制器 看法 我正在尝试导入的书签文件 编辑: 不太确定发生了什么显然Markio不像is说的那样进行解析。这是我导入文件时rails控制台所说的。它不会像它所说的那样返回书签数组。这就是它所做的一切,然后它重定向到我的根urlRuby on rails 如何从Rails中导入的文件创建新帖子?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我已经用解析了一个Netscape书签文件,我正在尝试将文件中的书签导入名为Bookmark的模型中 当我导入文件时,我没有得到任何错误。它告诉我书签已经导入了,但是没有显示出来 如何从使用Markio解析的文件中正确创建书签 我的书签字段是title和href,它们与Markio所说的内容相匹配 模型 控制器 看法 我正在尝试导入的书签文件 编辑: 不太确定发生了什么显然Markio不像is说的那样进行解析。这是我导入文件时rails控制台所说的。它不会像它所说的那样返回书签数组。这就是它所做
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"}
正如我在注释中指出的,Markio::parse返回一个数组。 您必须迭代元素并为每个元素创建书签
def self.import(file)
Markio.parse(file.path).each do |bookmark|
Bookmark.create(title: bookmark.title, href: bookmark.href)
end
end
不是。我在第2行中添加了每一个。你说的“它没有出现”是什么意思?rails服务器的输出说明了什么?书签真的在rails控制台中保存了bookmark.last吗?不,书签没有保存,但Markio正在解析文件,我相信这是因为rails服务器为文件输出了一系列参数。所以我需要的是获取Markio解析的内容并用它创建一个书签。这可能就是为什么导入操作没有保存任何书签。是的,这就是为什么,但是有没有一种方法可以从这个数组中创建一个书签呢?好的,所以我用rails控制台在导入时说的话更新了我的问题。Markio没有像预期的那样返回数组,我不知道为什么。
<%= 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>
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"}
def self.import(file)
Markio.parse(file.path).each do |bookmark|
Bookmark.create(title: bookmark.title, href: bookmark.href)
end
end