在创建控制器和模型之后(仅)创建 Ruby on Rails 视图

Posted

技术标签:

【中文标题】在创建控制器和模型之后(仅)创建 Ruby on Rails 视图【英文标题】:Create Ruby on Rails views (only) after controllers and models are already created 【发布时间】:2011-12-28 05:30:24 【问题描述】:

我已经获得了一个具有控制器(仅最少代码)和模型的项目,但是缺少视图。有没有办法只使用脚手架或其他工具生成视图?

【问题讨论】:

【参考方案1】:
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

【讨论】:

注意:如果您希望生成的视图具有属性,您需要在模型之后包含它们,例如用户名:字符串电子邮件:字符串等。 '--migration=false' 有什么作用? @KevinZhao ... 不生成迁移。 这并没有真正的帮助。 Rick Smith 下面的答案是正确的。 @CppNoob 事实证明,Rails 在最初的答案和 2015 年的新答案之间的四年里实际上发生了变化。【参考方案2】:

这是脚手架生成器内部调用的内容:

rails g erb:scaffold User

erb是使用的模板引擎,所以你也可以使用haml:scaffold

您必须明确指定您希望脚手架使用的字段——rails 不会自动从创建的模型中推导出它们。例如:

rails g erb:scaffold User firstname lastname reputation

请参阅rails g --help 了解跳过、强制覆盖和试运行等选项,或参阅generate scaffold --help 了解特定于生成脚手架的信息。

【讨论】:

我觉得这实际上是正确的答案。所有其他选项将生成缺少的任何内容。这仅生成视图。谢谢你:)【参考方案3】:

我刚遇到和你一样的问题。我做到了。更多细节如下: - 首先我将views/your_model 文件夹重命名为views/your_model_bak。为了在以后失败时恢复 - 然后,执行命令

rails g scaffold YourModel [field[:type][:index]] --skip
不要忘记 --skip 选项,它不会创建现有文件(本例中的控制器和模型以及其他一些文件) 确保列表 [field[:type][:index]] 是最新的

-- 最后,您应该在 your_model 控制器中更新您的许可。

希望对你有帮助。

【讨论】:

【参考方案4】:

“另一个工具”...

能够做到“script/generate view_for model_name”怎么样? :)

有一个宝石 - View Mapper。它有 Ruby on Rails 2 和 3 版本。

【讨论】:

是的,那是从 2011 年开始的,现在已经 4 岁了。【参考方案5】:

如果使用 Rspec 并且不希望为 spec/views 中的每个视图生成测试文件,一个小技巧是添加“--no-test-framework

【讨论】:

【参考方案6】:

要在创建控制器和模型后生成视图,您可以使用命令行。您切换到要在其中创建新视图的文件夹。例如:

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

要返回一个目录,请使用:

$ cd ..

【讨论】:

...?或者只是在编辑器中创建文件。我看不出这是什么特别的帮助文件,它基本上是在说“通过创建文件来创建文件”,并且它不会创建所有相关的 Rails-ish 文件,只是你在命令行上创建的那个。跨度>

以上是关于在创建控制器和模型之后(仅)创建 Ruby on Rails 视图的主要内容,如果未能解决你的问题,请参考以下文章

在 ruby​​ on rails 中以一对多关系创建新记录

Ruby on rails,改变最近创建的脚手架

如何在 Ruby on Rails 中链接个人资料页面

Ruby On Rails在脚手架之后添加新页面

Ruby on Rails 用户管理引擎/框架? (带网页)

ruby on rails(基础)