2011-05-30 74 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

相关问题