2017-08-29 3 views
-1

私は1つの管理ページ(/ admin)を作成しようとしており、これに最も近い方法を見つけようとしていました。私が見つけたすべてのソリューションは、私のニーズにはあまりに複雑すぎるようです(管理ページには、リソースの1つを編集する単一の目的があります)。 1つのアクションだけを持つコントローラは最も簡単なソリューションのようですが、これを行う前に他のオプションを検討する必要がありますか?インデックスアクションのみのコントローラを作成することをお勧めしますか?

答えて

3

考慮すべき点がいくつかあります。

  • ページを1つのリソースを編集するために使用されている場合は、その理由/adminではなく、/<resource>または/admin/resourceまたは/admin/<resource>/:idでいるのですか?必要に応じてネストされたルートを使用して管理ネームスペースを作成することができます。潜在的にあなたのルートに:adminの名前空間を付けて、専用のコントローラを作るのではなく、管理名前空間のルートを特定のコントローラに設定することもできます。
  • アクションのコントローラを作成することに本質的に間違っていることはありません。しかし、通常、そのようなページは、リソースを編集するためのものではなく、ダッシュボードやリソース/モデル階層にきれいにマップされていない特別な機能です。
  • いくつかの静的なページが必要な場合は、1つのコントローラでそれらをグループ化するのが一般的です(他のソースの中のRailsのチュートリアルに従います)。

Railsルーティングガイド(http://guides.rubyonrails.org/routing.html)を読んでいない場合は、読んでいる可能性があります。

+0

名前空間について読んだところ、私のニーズには余計なようでした。管理ページを作る決心は残念ながら私のものではないので、私はそれをスキップすることはできません。私はあなたの第2弾を読むことができてうれしく思います。それはまさにダッシュボードのようなものです(リソースの編集と追加の統計情報)。私は通常3番目の弾丸オプション(ページコントローラ)に行ってきましたが、常に複数のカスタムアクションしかありませんでした。大きな反応がありがとう、これが私の必要なものです。 – sloneorzeszki

0

HTTP基本認証を使用して、before_actiononlyオプションを使用すると、パスワード保護するアクションに対してのみトリガーできます。

class ResourceController < ApplicationController 
    before_action :authenticate, only: [:admin_edit] 

    def admin_edit 
    # your action code here 
    end 

    def authenticate 
    authenticate_or_request_with_http_basic do |username, password| 
     username == "admin" && password == "[email protected]" 
    end 
    end 

end 
関連する問題