LoginEngine、UserEngineのレイアウト、スタイルシートを設定

いままで、自分の設定が十分でないため、以下の現象が出ていた。

  • スタイルシートの設定がscaffoldのままなので、決して見易いとは言えない...。
  • Roleの設定をする時に、all、noneのチェックボックスの一括処理が動作しない。
  • パスワード変更でエラーを出したままキャンセルすると、そのエラーがいつまでも残った状態になる。

我慢すればいいことなのでずっと放っておいたが、本日、ちゃんと対策してみた。

app/views/layouts/user.rhtmlの設定

<html>
<head>
  <title><%= controller.controller_name %>: <%= controller.action_name %></title>
  <%= engine_stylesheet "login_engine" %>
  <%= engine_stylesheet "user_engine" %>
  <%= engine_javascript "user_engine" %>
</head>
<body>

<% for name in [:notice, :warning, :message] %>
  <%= "<p style=?"color: green?">#{flash[name]}</p>" if flash[name] %>
<% end %>

<%= yield %>

</body>
</html>
  • 上記と同じ設定で、下記ファイルも作成する。
    • app/views/layouts/role.rhtml
    • app/views/layouts/permission.rhtml

それぞれのコントローラーに<% engine_javascript "user_engine" %>を適用したので、role/editの画面で、all/noneをクリックすれば、すべてチェックあり/なしの操作も動作するようになった。

      • 同じ内容でuser、role、permissionそれぞれのレイアウトファイルを用意したが、本当は一つのファイルを共用したい...。

vendor/plugins/user_engine/public/stylesheets/user_engine.cssへの追記

  • スタイルシートに3行追加した。テーブル全体の色、ヘッダーセルの色、データセルの色を指定しただけ。
...(途中省略)...
table { background-color: lightgrey; }
th { background-color: lavender; }
td { background-color: whitesmoke; }

これで見た目はこんな感じに...





多少、見易くなったかな...。

app/controllers/user_controller(user_engineからコピーしたファイル)への追記

パスワード変更でエラー表示が残り続けてしまう対策で、オレンジ色の1行を追記した。前回のエラー情報が残ってしまうので、errorsオブジェクトのクリアが必要なようだ。

...(途中省略)...
  def generate_filled_in
    get_user_to_act_on
    ### 以下1行追記
    @user.errors.clear
    case request.method
    when :get
      render
      return true
    end
    return false
  end
...(途中省略)...