Create Ruby on Rails views (only) after controllers and models are already created

后端 未结 6 1061
庸人自扰
庸人自扰 2020-12-23 02:21

I\'ve obtained a project that have controllers (minimal code only) and models, but the views are missing. Is there a way to generate the views only using scaffold or another

相关标签:
6条回答
  • 2020-12-23 02:54

    "Another tool"...

    How about being able to do "script/generate view_for model_name"? :)

    There is a gem for that - View Mapper. It has Ruby on Rails 2 and 3 versions.

    0 讨论(0)
  • 2020-12-23 02:54

    One small tip is to add "--no-test-framework" if using Rspec and don't want test files generated for each view in spec/views

    0 讨论(0)
  • 2020-12-23 03:08
    rails g scaffold User --migration=false --skip
    

    The --skip means to skip files that already exist. (The opposite is --force.)

    If you don't want helpers, --helpers=false.

    Sample output after deleting my User views:

          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
    
    0 讨论(0)
  • 2020-12-23 03:10

    I just encounter the same your problem. I did it. More detail is below:
    - First I rename views/your_model folder to views/your_model_bak. In order to revert if fail later
    - Then, execute command

    rails g scaffold YourModel [field[:type][:index]] --skip
    
    • Don't forget --skip option, it will not create exist files (controller and model in this case and few other files)
    • Make sure list [field[:type][:index]] is up to date

    -- Finally, you should update your permit in your_model controller.

    Hope it can help you.

    0 讨论(0)
  • 2020-12-23 03:13

    This is what the scaffold generator calls internally:

    rails g erb:scaffold User
    

    erb is the templating engine used, so you can also use haml:scaffold.

    You must explicitly specify the fields you would like the scaffolding to use--rails does not automatically deduce them from the created model. For example:

    rails g erb:scaffold User firstname lastname reputation
    

    See rails g --help for options like skipping, forcing overwriting, and dry runs or generate scaffold --help for information specific to generating scaffolding.

    0 讨论(0)
  • 2020-12-23 03:14

    To generate views after controller and models are already created, you may use the command line. You switch to the folder in which you want to create the new view. For example:

    $ cd name_app/app/views/controller_name
    $ touch name_file
    

    To go back of one directory use:

    $ cd ..
    
    0 讨论(0)
提交回复
热议问题