2011年1月11日火曜日

Rails3のRoutesでnamespaceとform_forに挑む

Adminルーティング的な事をしたかったのよっ!

例えば、ブログもそうだけど、一般の人がなんでもかんでもデータを操作できるのはまずいから、管理者用のページを用意するけど、意外と管理者用のページが多いと、コントローラを管理者用と一般用とに分けておいた方がいいんじゃね?ってなりますよね?この考え方が間違ってるとなれば、もうここから先は全くの無駄になってしまうんだけど、とりあえずやってみてうまく動いたから書いておきます。意外と躓くところなんじゃないだろうか

config/routes.rb

namespace 'admin' do
  resources :posts
end

admin/posts_controller.rb

#new, edit, create, updateなどで
@post = Post.new #など Postのインスタンスを入れる (AdminPostではない)

posts/_form.html.erb

<%= form_for [:admin, @post] do |f| %>

たったこれだけ。まじ簡単。app/controllers/adminの中のコントローラはログイン画面以外を除いてあとは全部認証が通ってないとアクセスできないことにしておけばいいからアクセス権限周りのことが把握しやすい構成になると思います。namespaceじゃなくてscopeでもいいんじゃ?とかあるかもしれないけど、その辺の判断はまだできてないから今後の課題です。勉強中!

0 件のコメント: