9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Elixir+Phoenix]実行したコントローラとアクションを表示する

Last updated at Posted at 2015-09-14

#Goal
実行したコントローラとアクションを表示する、デバッグ出力を実装する。

#Dev-Environment
OS: Windows8.1
Erlang: Eshell V6.4, OTP-Version 17.5
Elixir: v1.0.5
Phoenix Framework: v1.0.0

#Wait a minute
デバッグ出力を作成します。

私の環境で申し訳ないのですが、以下のような表示をできるようにします。(赤枠の部分)
02.png

コントローラ名とアクション名が出力されています。

#Index
Phoenix-Framework debug dump
|> web.exでインポートする関数を追加
|> レイアウトテンプレートを変更
|> LayoutViewへ関数を追加
|> Debugテンプレートを作成
|> おまけ

##web.exでインポートする関数を追加

web.exのview/0でインポートする関数を追加します。
(action_name/1、controller_module/1の関数)

ファイル: web/web.ex

def view do
  quote do
    ...

    # Import convenience functions from controllers
    import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1,
                                      action_name: 1, controller_module: 1]

    ...
  end
end

##レイアウトテンプレートを変更
レイアウトテンプレートへデバッグを表示するテンプレートを追加します。

ファイル: web/templates/layout/app.html.eex

<!DOCTYPE html>
<html lang="en">
  ...

  <body>
    ...

    <div class="container">
      <%= render "debug.html", conn: @conn %>
    </div>

    ...
  </body>
</html>

##LayoutViewへ関数を追加
実行中のアクション名とコントローラ名を取得する関数を追加しています。

ファイル: web/views/layout_view.ex

defmodule SampleApp.LayoutView do
  use SampleApp.Web, :view

  def get_controller_name(conn), do: controller_module(conn)
  def get_action_name(conn), do: action_name(conn)
end

##Debugテンプレートを作成
デバッグ内容を出力する新しいテンプレートを作成します。

ファイル: web/templates/layout/debug.html.eex

<div class="debug_dump">
  <p>Controller: <%= get_controller_name @conn %></p>
  <p>Action: <%= get_action_name @conn %></p>
</div>

##おまけ
デバッグを出力するためのCSSを作成します。

ファイル: priv/static/css/custom.css

/* miscellaneous */
.debug_dump {
  clear: both;
  float: left;
  width: 100%;
  margin-top: 45px;
  color: inherit;
  background-color: #eee;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

.debug_dump p {
  margin-bottom: 1px;
  font-size: 15px;
  font-weight: 200;
}

#Speaking to oneself
ブログの方に掲載している、
Phoenix Tutorialの書き直しの過程で作成しましたので、記事にしました。

無くても何とでもなりますが、
あった方が便利、あれば使う程度の機能ですよね。

#Bibliography
Phoenix-Framework - Guides - templates

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?