Я собираю приложение Rails для сбора и показа последних курсов валют.
У меня есть два представления:
index.html.erb:Показывает с помощью «collection_select» все страны, которые были выбраны, и кнопку для поиска страны курса.
show.html.erb: Показывает рейтинг выбранной страны.
В моей таблице 3 столбца:
- Short (т. Е. USD)
- Страна (т. Е. Соединенные Штаты)
- Тариф (т. Е. 1,234)
В представлении просмотра есть кнопка для возврата к индексу для нового исследования (с обновленными показателями -> с тем же соскобом)
Я хочу обновитьтолько очищенные обновленные значения, (НЕ, если они не обновлены)
Это мой первый пост, надеюсь, это достаточно ясно ..!Заранее спасибо
Мой контроллер:
class CurrenciesController < ApplicationController
def index
Scraper.new.save
@currency = Currency.new
end
def show
@currency = Currency.find(params[:currency][:id])
Currency.destroy_all
end
def update
end
end
Мой скребок:
class Scraper
require 'nokogiri'
require 'open-uri'
def initialize
@array = []
url = Nokogiri::HTML(open("https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/index.en.html"))
url.css('tbody>tr').each do |row|
hash = {}
hash['Short'] = row.css('.currency').text
hash['Country'] = row.css('.alignLeft').text.split(/ |\_|\-/).map(&:capitalize).join(" ")
hash['Rate'] = row.css('.rate').text
@array << hash
end
@array
end
def save
@array.each do |currency|
Currency.create(short: currency["Short"], country: currency["Country"], rate: currency["Rate"])
end
end
end
Моя схема:
ActiveRecord::Schema.define(version: 2019_01_29_113433) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "currencies", force: :cascade do |t|
t.string "short"
t.string "country"
t.float "rate"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
Мой индекс:
<h1>Euro Foreign Exchange Reference Rates</h1>
<br>
<div class="text-center">
<%= form_for @currency, url: show_path do |c| %>
<p>Choose your Foreign Exchange Reference</p><br>
<%= c.collection_select :id, Currency.order(:country),:id,:country, {include_blank: false} %>
<br><br><br>
<%= c.submit "Search", ({:class => 'btn btn-light btn-sm'}) %>
<% end %>
</div>
Мое шоу
<div class="text-center">
<h2>
<%= @currency.country %>
</h2>
<br>
<p>1€ =
<%= @currency.rate %>
<%= @currency.short %>
</p>
<p class="time"> <%= @currency.created_at.strftime("Updated on %d/%m/%Y at %k:%M UTC")%></p>
<h3>
<a href="https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/eurofxref-graph-<%= @currency.short.downcase %>.en.html" target="_blank">-->
<%= @currency.country %>
Exchange Reference Rate
<-- <b </a> </h3> <br>
<p><%= link_to "New Research with updated rates", root_path, :class => 'btn btn-light' %></p>
</div>