Ruby on rails 在RubyonRails中向我的表中添加了一列,但它没有显示在scaffold(新建/编辑屏幕)中——为什么?
我是RubyonRails新手,我有一个以前创建的脚手架 脚手架(我们称之为“宠物”)有一些原始字段(“宠物名称”、“宠物类型”) 我添加了一个新专栏(我们称之为“宠物色”) 我通过“rails生成迁移AddPetColorToPets pet_color:string:200”添加了它 然后是“rakedb:migrate”,然后是“rails s” 现在,我认为这将通过添加这些变量自动更新“pet/新建”和“pet/编辑”页面。但事实并非如此 所以。。。我想我是在问——应该有吗?如果没有,那么我需要做什么来转换我的页面Ruby on rails 在RubyonRails中向我的表中添加了一列,但它没有显示在scaffold(新建/编辑屏幕)中——为什么?,ruby-on-rails,Ruby On Rails,我是RubyonRails新手,我有一个以前创建的脚手架 脚手架(我们称之为“宠物”)有一些原始字段(“宠物名称”、“宠物类型”) 我添加了一个新专栏(我们称之为“宠物色”) 我通过“rails生成迁移AddPetColorToPets pet_color:string:200”添加了它 然后是“rakedb:migrate”,然后是“rails s” 现在,我认为这将通过添加这些变量自动更新“pet/新建”和“pet/编辑”页面。但事实并非如此 所以。。。我想我是在问——应该有吗?如果没有,那
谢谢否,它不必更新以前创建的视图,因此,您必须更新html、控制器,可能还有模型,以使用新字段/属性通过创建或删除数据库表中的任何字段或创建并运行新迁移来修改模型,将不会为您更新视图或控制器。 您必须通过将新属性添加到视图中来手动进行修改 现在,根据您的配置,它可以简单到:
rails destroy scaffold_controller ModelName
这将删除与ModelName
关联的所有视图和控制器
在您的情况下,您将运行以下命令:
rails destroy scaffold_controller Pet
(这将删除与Pet
模型关联的所有视图和控制器。)
如您所见,这也将删除那些视图和控制器中可能包含的任何代码
请自行承担使用风险。
现在,要使用新字段重新创建控制器和视图,请运行:
rails g scaffold_controller Model attribute1 attribute2 attribute3
这将生成具有三个提供属性的所有视图,例如
rails g scaffold_controller Pet pet_name pet_type pet_color
这将使用pet_color
属性重新创建视图
请记住在模型名称后提供属性,否则,创建的视图将不会引用任何属性。这是因为当您使用scaffold\u controller
时,您告诉Rails不要使用模型,因此,您必须手动提供属性
有关rails generate
和rails destroy
命令的更多信息,请分别执行rails generate-h
和rails destroy-h
有关Rails命令行的更多信息,请参阅上提供的指南
如果这种方法是不可接受的(您已经在视图中编写了很多代码等),那么您必须手动进入并相应地更新视图
您还可以研究备份现有视图和控制器,一旦按照上述方式销毁并重新生成视图和控制器,就可以复制并粘贴相关代码。您需要编辑视图以添加字段。它不会为您重写代码。如果您修改了脚手架视图和控制器,则您没有使用脚手架。你在问为什么你的视图没有从迁移中神奇地更新。我更新了我的视图、我的控制器中的“article_params”和我的模型(只是为了验证是否存在)。结果是:Petss中的NoMethodError#new--在我引用变量“pet#u color”的行上……只是为了确认一下,您是否运行了rake db:migrate?