2011-05-29 23 views
0

在Ruby中創建方法的問題,我有一個Rails應用程序,涉及的用戶,散文,和排名。這很簡單,但我對鐵軌很陌生。我現在遇到的問題是排名的創建方法。on Rails的

漫筆類has_many :rankings和排名控制器的等級類belongs_to :essay

我:

def create 
    @ranking = @essay.rankings.build(params[:ranking]) 
    flash[:success] = "Ranking created!" 
    redirect_to root_path 
end 

,但我得到的錯誤:未定義的方法`排名的零:NilClass

我需要在每次排名有一個essay_id,我相信build更新這對我來說。

我認爲軌給我的排名方法,因爲我設置的關係,爲什麼是@essay零?

在此先感謝

+0

其中是@essay對象???錯誤喊......「未定義的方法'排名的零:NilClass」 – 2011-05-29 22:27:25

回答

1

構建不保存。您應該使用new,然後使用save。我會給你提供示例代碼,但是你並沒有真正給我們清楚你所做的事情。這個@essay實例變量在它被定義之前就被使用了,我不確定你的應用程序是如何確定排名所屬的文章的。

你可能想給Rails Guides讀。

0

我覺得這是你打算做什麼:

# EssayController#new 
def new 
    @essay = Essay.new(params[:essay]) 
    @ranking = @essay.rankings.build(params[:ranking]) 
    #... 
end 

nested model forms看看,它應該讓你在正確的方向。

+0

我相信這個方法的背景是他RankingsController。他似乎想創建屬於現有論文的新排名。也就是說,你的代碼會遇到和原來一樣的問題:'build'不能保存。 – coreyward 2011-05-29 22:27:14

+0

的確如此,我在重新閱讀他的問題後意識到。將編輯澄清。 – David 2011-05-29 22:30:31

+0

您編輯的解決方案似乎再次錯過了船。他正在嘗試創建屬於**現有論文**的排名。 – coreyward 2011-05-30 00:09:08