我正在使用Rails入门http://tutorials.jumpstartlab.com/projects/blogger.html
上的教程我已经完成了教程,现在我正在使用我为学校工作创建网站所做的工作,我只想在db / migrate / 20161005160810_create_articles.rb上添加“数据”文件,但我收到此消息错误
Showing /home/ubuntu/workspace/app/views/articles/show.html.erb where line #12 raised:
undefined method `data' for #<Article:0x007f8bcab2cfe8>
Extracted source (around line #12):
<p>
<strong>Data:</strong>
<%= @article.data %>
</p>
我的articles_controller就像这样
class ArticlesController < ApplicationController
http_basic_authenticate_with name: "mateus", password: "mateus", except: [:index, :show]
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def edit
@article = Article.find(params[:id])
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
def update
@article = Article.find(params[:id])
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to articles_path
end
def article_params
params.require(:article).permit(:title, :text, :data)
end
end
有人可以帮助我吗?
Edit1:我使用rake db:migrate:status
然后我得到了这个:
mateusjs:~/workspace (master) $ rake db:migrate:status
database: app_development
Status Migration ID Migration Name
--------------------------------------------------
up 20161005160810 Create articles
up 20161005185521 Create comments
up 20170209222858 Parte2
答案 0 :(得分:0)
schema.rb
是否表明您的Article
具有data
属性?
测试这个的一个快速方法是进入你的控制台和
$ bundle exec rails console
> Article
看看data
是否存在。
如果没有,你可能需要做两件事;
$ bundle exec rails g migration AddDataToArticle data:integer
bundle exec rails db:migrate
答案 1 :(得分:0)
您是否创建了一个新的迁移,如:
rails g migration AddDataToArticle data:binary
rails db:migrate
data:binary
因为我认为应该存储“文件”本身。
或者您是否更改了已定义的迁移。由于目前没有data
属性存在 - ruby认为这应该是一种方法。
您可以将迁移附加到您的问题吗?
答案 2 :(得分:0)
根据问题的描述以及您要完成的任务,您忘记将迁移应用于数据库。
如果更改了现有迁移,则需要通过运行以下命令重新应用它(假设您运行的是Rails 5.xx):
rails db:migrate:up VERSION=20161005160810
其他Rails版本应该接受此命令:
rake db:migrate:up VERSION=20161005160810
如果您创建了新迁移,则仍需要应用迁移。以下是您在Rails 5.xx中的操作:
rails db:migrate
其他Rails版本应该接受此命令:
rake db:migrate
希望这有帮助!