文章中的NoMethodError#show

时间:2017-02-09 22:04:32

标签: ruby-on-rails ruby show nomethoderror

我正在使用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

3 个答案:

答案 0 :(得分:0)

schema.rb是否表明您的Article具有data属性? 测试这个的一个快速方法是进入你的控制台和

$ bundle exec rails console

> Article

看看data是否存在。

如果没有,你可能需要做两件事;

  1. 进行迁移,即转到终端并执行类似的操作;
  2. $ bundle exec rails g migration AddDataToArticle data:integer

    1. 完成此步骤后,您需要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

希望这有帮助!