Elixir - Phoenixで株価を表示する(後編)
前回の続き。
今回は、Volume(日別出来高ランキング)
ページを実装する。
VolumeController
引数に受けた文字列をDate
にキャストする。
その値を使いDBからデータを取得する。
ポイントは where句ではピン演算子
を使うこと。
んでそのままテンプレートに@items
として渡す。
web/controllers/volume_controller.ex
が以下。
defmodule StockScraping.VolumeController do use StockScraping.Web, :controller def index(conn, %{"date" => date}) do target_date = case Date.from_iso8601(date) do {:ok, value} -> value end items = StockScraping.YahooVolume |> where(date: ^target_date) |> Repo.all render conn, "index.html", items: items end end
VolumeView
ヘルパーは今のところ使用していないので、デフォルトのまま。
web/views/volume_view.ex
が以下。
defmodule StockScraping.VolumeView do use StockScraping.Web, :view end
VolumeTemplate
コントローラーから受け取った@items
をレンダリングする。
web/templates/volume/index.html.eex
が以下。
<h3>出来高増加率ランキング</h3> <ul> <%= for item <- @items do %> <li> <%= item.ranking %> - <%= item.name %> </li> <% end %> </ui>
これで一旦表示出来た。
この時点で月別カレンダーと日別出来高ランキングが表示されるようになった。