2017-02-09 62 views
0

我使用與Rails的入門http://tutorials.jumpstartlab.com/projects/blogger.htmlNoMethodError在文章#顯示

我已經完成了教程,現在我用我做了什麼,爲學校工作建立網站教程我只想補充分貝的「數據」文件/遷移/ 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

我忘了mencion比我使用Cloud9 –

回答

0

是否schema.rb表明您Articledata屬性? 一個快速的方法來測試,這是進入你的控制檯和

$ bundle exec rails console 

> Article 

,看看data是存在的。

如果不是,您可能需要做兩件事;

  1. 做一個遷移就是說去終端並做類似的事情;

$ bundle exec rails g migration AddDataToArticle data:integer

  • 後你做這一步,你需要bundle exec rails db:migrate
  • +0

    我認爲它適用於我,我沒有'我的'schema.rb'數據'。所以我只是做了你告訴我的事情。現在至少hehehe。 Tks –

    +0

    @MateusJose很高興聽到!並且,歡迎來到Stack Overflow!您是否介意通過將我的回覆標記爲回答您的問題來幫助未來的SO'ers? _green checkmark_幫助了很多。 – fakefarm

    0

    你創建一個新的遷移做這樣:

    rails g migration AddDataToArticle data:binary 
    
    rails db:migrate 
    

    data:binary,因爲我認爲應該存儲「文件」本身。

    還是您更改了您已定義的遷移。由於目前沒有data屬性 - ruby​​認爲這應該是一種方法。

    你可以追加你的遷移到你的問題嗎?

    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 
    

    希望這有助於!