2011-01-17 15 views
1

は、ここで実用的なプログラマのレールルビーオンからの抜粋です。私はこの命令に得ることができる最も近い次のように使用している足場生成

ruby script/generate scaffold Product Admin (Product: Model and Admin: Controller) 

rail generate scaffold Product Admin:controller 

しかし、私は取得は製品コントローラと管理されては何もないです。

私はどのようにしてScaffold Product Adminを生成できますか?製品はモデルとなり、管理者は新しいRailsのコントローラですか?

+0

"Admin being the controller"の意味を説明できますか? Railsのリソースは、Modelとコントローラのリソース名に基づいて命名された規約に従っています。例えば。モデル:製品、コントローラ:ProductsController – polarblau

+0

ProductsControllerの名前をadminに変更したいのですが、手動で行うべきですか?あるいは、それを確実にするコマンドがありますか? – mabounassif

+0

名前空間を考慮しましたか?すなわち、代わりに 'Admin :: Products'コントローラを使います。 – PeterWong

答えて

1

あなたはこの本のどのバージョンをお持ちですか?第3版(Rails 2.x)があり、マシン上でRails 3を使用していて、script/generaterails generate scaffoldの不一致が説明されているようです。

+1

私はちょうど最新のベータ版を買った、すべての私の質問に答えた。全体が変わった。彼らは今、足場の製品タイトルを生成するレールを使用しています:文字列価格:10進数など.... – mabounassif

+0

あなたはそれを理解してうれしいです。 Rails 3はちょっと変わってしまいました。古い文書や書籍はかなり混乱させてしまいます。追加のヒントとして、コマンドの最初にショートカットとして 'rails generate'の代わりに 'rails g'と入力することができます。 – elithrar

1
rails generate controller Admin 
rails generate model Product 

+0

Scaffoldは自動的にコントローラとモデルをデータベーススキーマにリンクするため、動作しません。それは別のものでなければなりません。 – mabounassif

+1

私はコントローラとモデルが同じデータベーススキーマに関連している場合、コントローラとモデルが同じ名前を共有している必要があります。この場合、レールが足場製品を生成するはずです。コントローラーのURLをadminに変更する場合は、ルートファイルでこれを行うことができます。 – sevenseacat

+0

それはうまくいくかもしれませんが、私はこの魔法のコマンドを見つけることができればうまくいくと思います。 – mabounassif

1

実際にこのために足場を使用したい場合は、コントローラの名前を変更することをお勧めします(ファイル+クラス名)。例えば、 ネームスペースは、あなたが望むことをしないかもしれません。あなたは私が何を意味するかを参照してください。この

/admin/  # -> returns all products 
/admin/new # -> form for new product 
/admin/23 # -> product with id 23 

などのリソースにアクセスする必要があると思いますので、

あなたの構造は、あなたのコントローラがadmin controller呼び出された場合、理解することがやや困難になり、モデルproductでしょうか?

+0

ええ、私は、この本がコントローラ管理者の名前をつけることを主張しているのは変だと思うかもしれません。おそらく、別のコントローラを再作成するのが面倒で、コントローラを生成したレールをわずかに変更することにしました。それは私がそれを考えると、それほど悪い考えではありません。 :) – mabounassif

+0

私はこの本にアクセスできないが、製品のコントローラーはアプリケーションコントローラーではなく管理コントローラーからのみ継承することができますか? – polarblau

0

Railsで管理用足場が生成されているのは間違いありません。 quesitonのポイントは、デフォルトのレール足場ジェネレータは、名前空間付きのモデルを含むネームスペースのリソースを作成し、それはあまり有用ではないため、通常は管理領域とパブリック領域に共通の原因モデルです。

私もこの問題に直面し、そのための標準的な解決策は見つけられませんでした。

したがって、私はこのプロセスを自動化するrails-admin-scaffold gem(今のところそれはRails 4のみ)を作成し、より詳細な説明でan articleを書きました。私の答えは時代遅れですが、それは他の人々が適切な解決策を見つけるのを助けるかもしれません。