web-dev-qa-db-ja.com

Ruby on Railsビュー(のみ)コントローラーとモデルが既に作成された後)

コントローラー(最小コードのみ)とモデルを持つプロジェクトを取得しましたが、ビューがありません。 scaffoldまたは他のツールのみを使用してビューを生成する方法はありますか?

41
Sean
Rails g scaffold User --migration=false --skip

--skipは、すでに存在するファイルをスキップすることを意味します。 (反対は--force。)

ヘルパーが必要ない場合は、--helpers=false

Userビューを削除した後のサンプル出力:

      invoke  active_record
   identical    app/models/user.rb
      invoke    test_unit
   identical      test/unit/user_test.rb
        skip      test/fixtures/users.yml
       route  resources :users
      invoke  scaffold_controller
   identical    app/controllers/users_controller.rb
      invoke    erb
       exist      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    test_unit
   identical      test/functional/users_controller_test.rb
      invoke    helper
   identical      app/helpers/users_helper.rb
      invoke      test_unit
   identical        test/unit/helpers/users_helper_test.rb
      invoke  assets
      invoke    coffee
   identical      app/assets/javascripts/users.js.coffee
      invoke    scss
   identical      app/assets/stylesheets/users.css.scss
      invoke  scss
   identical    app/assets/stylesheets/scaffolds.css.scss
79
Dave Newton

これはscaffoldジェネレーターが内部的に呼び出すものです:

Rails g erb:scaffold User

erbは使用されるテンプレートエンジンです。したがって、haml:scaffold

足場が使用するフィールドを明示的に指定する必要があります。Railsは、作成したモデルから自動的に推測しますnot。例えば:

Rails g erb:scaffold User firstname lastname reputation

見る Rails g --helpスキップ、強制上書き、ドライランなどのオプションまたはgenerate scaffold --help足場の生成に固有の情報。

15
Rick Smith

「別のツール」...

script/generate view_for model_name "?:)

そのための宝石があります- View Mapper 。 Ruby on Rails 2および3バージョン。

2
Michael Durrant

同じ問題が発生しました。やったよ。詳細は次のとおりです。
-最初に、views/your_modelフォルダーの名前をviews/your_model_bakに変更します。後で失敗したら元に戻すために
-次に、コマンドを実行します

Rails g scaffold YourModel [field[:type][:index]] --skip
  • --skipオプションを忘れないでください。既存のファイル(この場合はコントローラーとモデル、その他のいくつかのファイル)は作成されません。
  • リスト[field [:type] [:index]]が最新であることを確認してください

-最後に、your_modelコントローラーで許可を更新する必要があります。

それがあなたを助けることを願っています。

2
Ken Block

小さなヒントの1つは、「--no-test-framework "Rspecを使用し、spec/viewsの各ビューに対してテストファイルを生成したくない場合

1
Dave Burke