未定义的方法错误^在rails上的ruby中

时间:2011-05-30 16:15:13

标签: ruby-on-rails

我第一次尝试使用rails并且我一直在尝试这个未定义的方法错误。到目前为止,我所做的只是使用rails创建一个新项目,并使用scaffold来创建名为test的数据库表。应用rate命令后,一切正常,但是当我在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

2 个答案:

答案 0 :(得分:2)

错误消息抱怨,因为Rails尝试在字符串“7”上使用^运算符,该运算符不支持该操作(数字7将支持该操作)。回溯中指示的行为form_for(@test),因此form_for会对@test执行某些操作,导致^上的7被调用。最可能的原因是Rails尝试将@test的id设置为某个地方,并且意外地@test.id返回字符串"7"而不是数字7

换句话说,您可能将tests表设置为具有字符串类型而不是整数的id列,而Rails不喜欢它。

答案 1 :(得分:1)

我的猜测是你已经为@test分配了一个不是模型对象的东西。请从您的控制器发布new方法的代码,以便我们进一步深入研究。