2015-06-10 2 views
0

Я пытаюсь экспортировать ссылки, которые находятся в моей базе данных, в файл закладок HTML Netscape, используя Markio.Как экспортировать HTML-файл в Rails?

Следующий код Ruby от Markio. Я не уверен, как заставить его работать с Rails, чтобы я мог экспортировать ссылки из моей базы данных в файл, который пользователь может загрузить.

builder = Markio::Builder.new 
builder.bookmarks << Markio::Bookmark.create({ 
    :title => "Google", 
    :href => "http://google.com" 
}) 
file_contents = builder.build_string 
File.open('/path/to/bookmarks.html', 'w') { |f| f.write file_contents } 

Это то, что у меня есть до сих пор в приложении Rails. Скорее всего, я ошибаюсь, потому что знаю только, как это делать с CSV и Excel. Каждая ссылка в моей базе данных Rails имеет title и url.

Если я перейду к ссылкам/экспорту в моем браузере, он должен скачать файл, но я получаю сообщение об ошибке «uninitialized constant Markio :: Link».

Это мой контроллер Ссылки:

def export 
    @links = Link.all 
    respond_to do |format| 
     format.html { send_data @links.to_csv } 
    end 
end 

Это моя модель Ссылки:

def self.to_csv(options = {}) 
    builder = Markio::Builder.new 
    builder.bookmarks << Markio::Link.create({ 
     :title => title, 
     :href => url 
    }) 
    file_contents = builder.build_string 
    File.open('/path/to/bookmarks.html', 'w') { |f| f.write 
    file_contents } 
end 
+0

Попробуйте 'require 'markio" 'в вашей модели в первую очередь? На самом деле выглядит «Markio :: Link» должно быть «Markio :: Bookmark» – jemminger

+0

Это не проблема, у меня установлен Markio gem, потому что у меня есть опция импорта, но я понятия не имею, как настроить его, чтобы пользователи могли экспорт. – EliteViper7777

ответ

0

не должны быть Markio::LinkMarkio::Bookmark? Я не вижу объект Link в своем API.

+0

Если я это сделаю, я получу ошибку, не определенную локальную переменную или метод 'title '. Поэтому он не читает поле заголовка в моей базе данных из моей модели ссылок. – EliteViper7777

+0

Ваш метод определяется как метод класса 'def self.to_csv', поэтому для самого класса не существует метода' title'. Определите его как метод экземпляра 'def to_csv'. – jemminger

+0

Итак, теперь я получаю загруженный файл, но содержимое читается следующим образом: <<ссылка: 0x007fd0c45a6878>. Он также загружает .txt-файл, а не .html – EliteViper7777

Смежные вопросы