Ruby on Rails生成视图

时间:2011-04-10 19:18:59

标签: ruby-on-rails-3 views scaffold

有没有办法使用rails generate命令单独生成视图?我也愿意安装一个gem来完成任务。基本上脚手架命令给了我太多,我宁愿手工编写我的控制器。但是,使用表格为记录编写索引视图效率不高。

4 个答案:

答案 0 :(得分:83)

如果使用控制器生成器,则会生成控制器操作和视图。

rails g controller controllername new create

这将创建新的并创建具有相关视图的操作。

您仍然需要手动设置路线。

答案 1 :(得分:2)

第一部分是模型/控制器的名称,第二部分是动作。

答案 2 :(得分:2)

一种特殊情况是,您希望将 视图添加到现有控制器。

在这种情况下,只需使用常规命令,但每次提示时都要小心说'n',以免覆盖现有文件。

例如,将名为'invite'的视图添加到名为'projects'的现有控制器中:

smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ rails -v
Rails 5.1.4
smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ rails generate controller projects invite
Running via Spring preloader in process 46253
    conflict  app/controllers/projects_controller.rb
Overwrite /home/smith/railsapps/project_manager/app/controllers/projects_controller.rb? (enter "h" for help) [Ynaqdh] n
        skip  app/controllers/projects_controller.rb
       route  get 'projects/invite'
      invoke  erb
       exist    app/views/projects
      create    app/views/projects/invite.html.erb
      invoke  test_unit
    conflict    test/controllers/projects_controller_test.rb
  Overwrite /home/smith/railsapps/project_manager/test/controllers/projects_controller_test.rb? (enter "h" for help) [Ynaqdh] n
        skip    test/controllers/projects_controller_test.rb
      invoke  helper
   identical    app/helpers/projects_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
   identical      app/assets/javascripts/projects.coffee
      invoke    scss
    conflict      app/assets/stylesheets/projects.scss
    Overwrite /home/smith/railsapps/project_manager/app/assets/stylesheets/projects.scss? (enter "h" for help) [Ynaqdh] n
        skip      app/assets/stylesheets/projects.scss
smith@ubuntuSrv16DEV4:~/railsapps/project_manager$ 

答案 3 :(得分:0)

正如Sameers之前提到的,有一篇文章显示了如何仅生成视图。它将使用rails默认模板为您的模型创建所有视图,这非常方便。

如果像我一样,您想要一些可定制的东西,可以实现以下目标。

您可以创建自己的生成器,这样就可以实现。

导轨生成视图“ NAME VIEW” [选项]

要实现此目的,您需要执行以下操作。

theStudent

这将在lib / generators / view /文件夹中为您生成一些文件。

打开view_generator.rb文件并添加以下代码。

reloadedStudent

接下来,您需要创建我们正在使用generate_view方法中使用的实际模板的文件。

以new动作为例,创建一个filelib / generators / view / new.html.erb并添加以下内容。

rails generate generator view

根据需要自定义模板视图。您还需要添加_form.html.erb。在view_generator.rb文件中添加任何其他变量和逻辑,就可以完成。

这是更多的工作,但是如果您发现自己一直在生成相似的视图,那是值得的。

对于这种方法,我可以想到的最佳用例是将平台标记为白色,并且需要为客户端配置文件生成多个文件。