【问题标题】:NoMethodError in Articles#show文章中的 NoMethodError#show
【发布时间】:2017-02-09 22:04:31
【问题描述】:

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

【问题讨论】:

  • 我忘了比我使用 Cloud9

标签: ruby-on-rails ruby show nomethoderror


【解决方案1】:

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

$ bundle exec rails console

> Article

然后查看data 是否存在。

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

  1. 进行迁移,也就是说到终端执行类似的操作;

$ bundle exec rails g migration AddDataToArticle data:integer

  1. 完成该步骤后,您需要bundle exec rails db:migrate

【讨论】:

  • 我认为它对我有用,我的schema.rb 中没有data。所以我只是按照你告诉我的做了,它有效。至少现在,呵呵。 Tks
  • @MateusJose 很高兴听到!而且,欢迎来到 Stack Overflow!您是否介意通过将我的回答标记为回答您的问题的回答来帮助未来的 SO'ers。 绿色复选标记很有帮助。
【解决方案2】:

您是否创建了一个新的迁移:

rails g migration AddDataToArticle data:binary

rails db:migrate

data:binary 因为我认为应该存储“文件”本身。

或者您是否更改了已定义的迁移。由于目前没有 data 属性存在 - ruby​​ 假定这应该是一个方法。

您能否将迁移附加到您的问题中?

【讨论】:

    【解决方案3】:

    根据问题描述和您想要完成的任务,您忘记将迁移应用到您的数据库。

    如果您更改了现有迁移,则需要通过运行以下命令重新应用它(假设您运行的是 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
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-05
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多