2011-05-30 98 views
2

我第一次嘗試rails,我不斷收到這個未定義的方法錯誤。到目前爲止,我所做的只是使用rails來創建一個新項目和腳手架來創建我的數據庫表test。應用率命令一切正常後,但是當我在Web瀏覽器中運行它,它給了我這個錯誤:未定義的方法錯誤^在軌道上的紅寶石

ActionView::TemplateError (undefined method `^' for "7":String) on line #3 of app/views/tests/new.html.erb: 
1: <h1>New test</h1> 
2: 
3: <% form_for(@test) do |f| %> 
4: <%= f.error_messages %> 
5: 
6: <p> 

任何與我如何能處理這個錯誤任何想法?

編輯: - 在控制器

「新」 行動: -

def new 
    @test = Test.new 
    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @test } 
    end 
end 
+1

而不是在評論中發佈代碼,編輯問題並將其發佈到那裏。 – 2011-05-30 19:09:51

回答

1

我的猜測是,你已經分配給@test未嘗不是一個模型對象。請從您的控制器發佈new方法的代碼,以便我們深入瞭解這一點。

+0

def new @test = Test.new respond_to do | format | format.html#new.html.erb format.xml {render:xml => @test} end end – Maxwelll 2011-05-30 17:21:00

+0

多數民衆贊成從我的控制器的新方法 – Maxwelll 2011-05-30 17:21:28

+0

我不明白爲什麼這可能會導致這樣的錯誤。使用傳入非AR對象的ruby 1.9到'form_for'會導致關於不存在的'id'方法的錯誤,而不是關於'^'的錯誤。使用ruby的'1.8'你會得到一個關於'Object#id'被棄用的警告,然後它會返回一個對象id,而不是像''7「'這樣的字符串。無論哪種方式,你不會得到描述的錯誤信息。 – sepp2k 2011-05-30 19:43:58

2

由於Rails試圖對字符串「7」使用^運算符,該運算符不支持該操作(數字7將支持該操作),所以會報錯。回溯中指示的行是form_for(@test),所以form_for@test做了一些處理,這導致在7上調用^。最可能的原因是Rails嘗試在某處尋址@test的ID,並且意外地@test.id返回字符串"7"而不是7

換句話說,您可能將tests表設置爲具有字符串類型而不是整數的id列,而Rails不喜歡。

+0

當我將字段定義爲不同類型時,我仍然收到類似的錯誤。這是我的寶石或一些問題導致我重新安裝我的寶石,我仍然有同樣的問題 – Maxwelll 2011-05-30 20:28:38

+1

@Maxwell:你可以發佈類似的錯誤? – sepp2k 2011-05-31 09:22:08

相關問題