Я новичок в Rails и пытаюсь подключить свое приложение к стороннему API (в нем нет гема или плагина для Rails).
В идеале, я хочу уметь анализировать данные (я слышал хорошие слова о Нокогири, но не знаю, как использовать их для того, что я хочу делать. Не из-за отсутствия попыток) , а затем вставьте его в базу данных.
Кто-нибудь может дать инструкции или указать мне правильное направление?
Приветствия.
UPDATE:
Задание на рейк:
task :fetch_flyers => :environment do
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::XML(open(url))
events = doc.search('//event')
events.each do |event|
@data = Event.new(
:name => event.at('name').text,
:date => '2011-09-18',
:time => '17:00',
:description => event.at('long_description').text,
:address => event.at('street').text,
:postcode => event.at('postcode').text,
:price => event.at('costs').text,
:user_id => 1,
:genre_id => 1,
:town_id => 1)
@data.save
if @data.save
puts "Success"
else
puts "This didn't save, F***"
end
end
end
Я указал URL в своем коде, просто скрыл его от этой вставки кода.
Этот код не работает. Я не могу за свою жизнь понять, почему. Все, что я получаю, это вывод в терминале, говорящий "Это не сохранилось, F **, что означает, что по какой-то причине события не сохраняются. Может ли кто-нибудь пролить свет на это?
ОБНОВЛЕНИЕ 2:
Я проверил правильность URL-адреса и проверил, правильно ли выполняется синтаксический анализ XML с помощью:
# Printing Out the Variables to make sure they work.
puts @name
puts @date
puts @time
puts @desc
puts @address
puts @postcode
puts @price
puts @user
puts @genre
puts @town
.. Который успешно распечатывает значения в терминале. Тем не менее, он все равно не будет вставлен в мою базу данных.
Моя модель выглядит следующим образом:
belongs_to :user
belongs_to :genre
belongs_to :town
has_attached_file :image, :styles => { :grid => '90x128#', :list => '140x200#', :full => '400x548'}
validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png']
before_post_process :normalise_file_name
validates :name, :presence => true
validates :date, :presence => true
validates :time, :presence => true
validates :description, :presence => true
validates :address, :presence => true
validates :town, :presence => true
validates :postcode, :presence => true
validates :price, :presence => true
validates :user_id, :presence => true
validates :viewcount, :presence => true
Мой файл Development.log просто показывает загрузку:
[1m[35mTown Load (0.1ms)[0m SELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1
[1m[36mTown Load (0.1ms)[0m [1mSELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1[0m
[1m[35mTown Load (0.1ms)[0m SELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1
[1m[36mTown Load (0.1ms)[0m [1mSELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1[0m
[1m[35mTown Load (0.1ms)[0m SELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1
[1m[36mTown Load (0.1ms)[0m [1mSELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1[0m
[1m[35mTown Load (0.1ms)[0m SELECT "towns".* FROM "towns" WHERE "towns"."id" = 1 LIMIT 1
.......
Каждый раз, когда я пытаюсь запустить грабли. Это что-нибудь значит?