我在rails cloud 9代码上遇到ruby问题,而我的任务是从UI创建一篇文章,并在我点击提交时将其保存到数据库中。
这是我的问题形象:
这是我的云9代码
routes.rb中:
Rails.application.routes.draw do
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
# root 'welcome#index'
resources :articles
root 'pages#home'
get 'about', to: 'pages#about'
end
文章控制器(articles_controller.rb):
class ArticlesController < ApplicationController
def new
@article = Article.new
end
end
视图中的文章文件夹中的new.html.erb:
<h1>Create an article</h1>
<%= form_for @article do |f| %>
<p>
<%= f.label :title %>
<%= f.text_area :title %>
</p>
<% end %>
文章模型(article.rb):
class Article < ActiveRecord::Base
end
我已完成迁移,这是我的迁移文件:
class CreateArticles < ActiveRecord::Migration
def change
@article = Article.new
create_table :articles do |t|
t.string :title
end
end
end
答案 0 :(得分:3)
您的迁移似乎缺少title
列
class CreateArticles < ActiveRecord::Migration
def change
create_table :articles do |t|
t.string :title
end
end
end
此外,您的模型应继承自ApplicationRecord
class Article < ApplicationRecord
end
如果你的Rails版本小于5,则ActiveRecord::Base
class Article < ActiveRecord::Base
end
答案 1 :(得分:0)
您应该从迁移文件中删除行@article = Article.new
。
这将使用new
关键字创建一个文章实例,同时您将运行迁移,它将是一个零实例,这就是您遇到上述错误的原因
文章ID:nill
因为最后一条记录是零,你正在寻找该记录的标题主键也是零。