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

17 浏览
0 Comments

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

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

0
0 Comments

当我们使用Rails生成器创建一个scaffold时,我们可能会遇到一个问题:在创建控制器和模型之后,我们如何创建视图。

问题的原因是Rails生成器默认不会自动创建视图。我们需要显式指定要使用的字段。例如,我们可以使用以下命令创建一个名为User的scaffold,并指定要包含的字段:

rails g erb:scaffold User firstname lastname reputation

解决方法是使用rails g erb:scaffold命令来创建视图。这个命令使用了erb作为模板引擎,当然你也可以使用其他的模板引擎,比如haml。通过这个命令,我们可以在控制器和模型已经创建的情况下仅生成视图。

另外,我们还可以使用rails g --help命令查看生成器的选项,比如跳过、强制覆盖以及模拟运行等。如果我们需要特定于生成scaffold的信息,可以使用generate scaffold --help命令。

,解决这个问题的方法是使用rails g erb:scaffold命令来创建视图,并显式指定要使用的字段。

0
0 Comments

问题原因:在创建Ruby on Rails的视图之前,控制器和模型已经被创建了。

解决方法:

1. 首先,将views/your_model文件夹重命名为views/your_model_bak,以便于以后恢复。

2. 然后,执行以下命令:

rails g scaffold YourModel [field[:type][:index]] --skip

- 不要忘记使用--skip选项,这样就不会创建已存在的文件(在这种情况下是控制器和模型以及其他几个文件)。

- 确保[field[:type][:index]]列表是最新的。

3. 最后,你需要在your_model控制器中更新你的permit方法。

希望这能帮到你。

0
0 Comments

问题的出现原因:

在使用rails g scaffold User --migration=false --skip命令生成User模型的视图时,发现控制器和模型已经创建好了,但是视图却没有生成。

解决方法:

在生成视图之前,需要先确保控制器和模型已经创建好了。可以通过使用--skip参数来跳过已经存在的文件,--force参数则相反,会覆盖已存在的文件。

示例输出:

在删除了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

注意:如果希望生成的视图包含属性,需要在模型之后包含它们,例如:User name:string email:string

--migration=false的作用是什么?

...不生成迁移文件。

这并不能真正解决问题。下面Rick Smith的答案是正确的。

事实证明,Rails在原始答案和2015年的新答案之间进行了四年的更改。

0