有没有办法使用rails generate命令单独生成视图?我也愿意安装一个gem来完成任务。基本上脚手架命令给了我太多,我宁愿手工编写我的控制器。但是,使用表格为记录编写索引视图效率不高。
答案 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文件中添加任何其他变量和逻辑,就可以完成。
这是更多的工作,但是如果您发现自己一直在生成相似的视图,那是值得的。
对于这种方法,我可以想到的最佳用例是将平台标记为白色,并且需要为客户端配置文件生成多个文件。