我第一次尝试使用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
答案 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
方法的代码,以便我们进一步深入研究。