1

Railsのルートファイルをもっとよく理解したいのですが、複雑すぎるので自分ではわかりません。

基本的に私は3つのコントローラーを持っています。それらは、Admin、ManageProduct、およびManageProductCategoryです(2つのモデルがあります:Product、ProductCategory、およびモデルProductCategory has_many / belongs_to products関係)

管理者コントローラーのアクション:

  • インデックス(ログインにリダイレクト)
  • ログインする
  • ログアウト
  • 試み

ManageProductコントローラーのアクション:

  • 索引
  • モデル製品のCRUD(削除、編集、表示、リスト)

ManageProductCategory

  • 索引
  • モデルproduct_categoryのCRUD(削除、編集、表示、リスト)

アプリケーションルートを管理できるようにしたいので、ブラウザに入力すると次のようになります。

mywebsite/admin
mywebsite/admin/login
mywebsite/admin/logout
mywebsite/admin/manage_product
mywebsite/admin/manage_product_category/1
mywebsite/admin/manage_product/delete
mywebsite/admin/manage_product/10

等々...

問題は、admin/manage_productがadminコントローラーアクションではないことをレールが理解できるようにルートファイルを設定する方法を理解できないことです...

注意:すべてがすでに機能しています(2つのモデルのCRUDと、標準ではない推奨ルートを介したアクションへのリンク

match ':controller(/:action(/:id(.:format)))'

本当にあなたの助けと注意に感謝します

よろしく

4

1 に答える 1

2

必要なのは名前空間です

# Rails 2.3.x
map.namespace :admin do |admin|
  map.resources :products
end

# Rails 3
namespace "admin" do
  resources :products
end

これにより、次のURLヘルパーメソッドが提供されます。

admin_products_path    GET  { :controller => "admin/products", :action => "index" }
new_admin_product_path GET  { :controller => "admin/products", :action => "new" }
admin_products_path    POST { :controller => "admin/products", :action => "create" }

admin名前空間でコントローラーを生成するには、コンソールで次の操作を行う必要があります。

$ rails generate controller admin/products

これにより、admin下のディレクトリが生成されapp/controllers、次にproducts.rbファイルが生成されます。

class Admin::ProductsController < ApplicationController
end

さて、admin名前空間でのログインは、認証用の宝石であるDeviseで設定できます。ここでさらに進むことができます:https ://github.com/plataformatec/devise/wiki/_pages

于 2010-12-19T16:48:43.107 に答える