2013-12-18 59 views
0

對於我的Ruby on Rails應用程序,我的隨機生成器索引視圖應該顯示一個包含所有隨機生成器的表。我正在使用Ruby版本1.9.2。這裏是我的遷移文件是什麼樣子爲什麼我的Ruby on Rails應用程序創建零對象

class CreateRandomgenerators < ActiveRecord::Migration 
    def change 
    create_table :randomgenerators do |t| 
     t.string :title 
     t.string :query 
    end 
    end 
end 

這是我種子文件

Randomgenerator.create!({:title => 'Test', :query => 'Christ the Center'}) 

這是我模式

class Randomgenerator < ActiveRecord::Base 

attr_accessor :title, :query 

    def generate_verse 
     table = Movie.where{self.query.include?(:rating) == true} 
     verse = table[0] 
     return verse 
    end 

end 

,這是視圖

%table#randomgenerators 
    %thead 
    %tr 
     %th Title 
     %th Run Generator 
    %tbody 
    - @randomgenerators.each do |randomgenerator| 
     %tr 
     %td= randomgenerator.title 
     %td= link_to "Run #{randomgenerator.title}", randomgenerator_path(randomgenerator) 

接種數據庫並在WEBrick上運行應用程序後,此表中填充有「鬼記錄」:標題欄爲空,但「運行」鏈接仍然出現,並將我帶到隨機生成器頁面。但是,當我試圖刪除它時,它聲稱我正在試圖對一個零級別進行操作。我究竟做錯了什麼。

+0

那是索引還是randomgeneratorcontroller? – joseramonc

+0

從'attr_accessor'刪除'title'並重試。 – Biketire

+0

您的模型中沒有驗證,那麼您爲什麼使用create!方法? –

回答

0

擺脫attr_accessor!繼承自activerecord :: base會自動爲數據庫中的字段添加方法。


說明:

調用attr_accessor :title創建方法title=title其獲取和設置@title實例變量。

對象的實例變量從nil開始,直到它們被設置。從問題描述中可以看出,視圖中沒有任何東西顯示出來(所以它可能會返回nil)。

面向對象的繼承允許在子類上定義的方法覆蓋在父類上定義的方法。 Randomgenerator < ActiveRecord::Base意味着RandomgeneratorActiveRecord::Base的子類。

ActiveRecord根據表結構和可用數據正確獲取值。但是,所有這些功能都被覆蓋,並且調用title返回@titlenil

+0

這將如何解決問題?編輯了 – Miotsu

+0

。希望它有道理 – AJcodez

+0

這絕對解決了索引視圖和更新操作的問題,但是當我單擊「運行生成器」鏈接查看生成器頁面時,隨機生成器的圖塊爲空,並聲明這些對象爲當我試圖創建或銷燬它們時,它們是無對象的。 – user3101645

相關問題