基本支架视图中没有方法错误?
我为具有单个属性的 Foo 模型创建了一个基本支架 - bar:String
foos/new.html.erb:
<h1>New foo</h1>
<% form_for(@foo) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :bar %><br />
<%= f.text_field :bar %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
<%= link_to 'Back', foos_path %>
但是我的“bar”属性出现了 NoMethodError: >
NoMethodError in Foos#new
Showing app/views/foos/new.html.erb where line #8 raised:
undefined method `bar' for #<Foo id: nil, created_at: nil, updated_at: nil>
Extracted source (around line #8):
5:
6: <p>
7: <%= f.label :bar %><br />
8: <%= f.text_field :bar %>
9: </p>
10: <p>
11: <%= f.submit 'Create' %>
如您所见, bar 是我的 Foo 模型中的唯一属性:
class CreateFoos < ActiveRecord::Migration
def self.up
create_table :foos do |t|
t.String :bar
t.timestamps
end
end
def self.down
drop_table :foos
end
end
foos_controller 中的新方法来自默认支架:
def new
@foo = Foo.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @foo }
end
end
任何想法将不胜感激
I created a basic scaffold for a Foo model with a single property - bar:String
foos/new.html.erb:
<h1>New foo</h1>
<% form_for(@foo) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :bar %><br />
<%= f.text_field :bar %>
</p>
<p>
<%= f.submit 'Create' %>
</p>
<% end %>
<%= link_to 'Back', foos_path %>
But I get a NoMethodError for my 'bar' property:
NoMethodError in Foos#new
Showing app/views/foos/new.html.erb where line #8 raised:
undefined method `bar' for #<Foo id: nil, created_at: nil, updated_at: nil>
Extracted source (around line #8):
5:
6: <p>
7: <%= f.label :bar %><br />
8: <%= f.text_field :bar %>
9: </p>
10: <p>
11: <%= f.submit 'Create' %>
As you can see, bar the only property in my Foo model:
class CreateFoos < ActiveRecord::Migration
def self.up
create_table :foos do |t|
t.String :bar
t.timestamps
end
end
def self.down
drop_table :foos
end
end
And the new method in the foos_controller is from the default scaffold:
def new
@foo = Foo.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @foo }
end
end
Any ideas would be appreciated
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看来您在数据库迁移中大写了单词
String
。尝试使用小写 s 并强制再次运行迁移(rake db:migrate:redo
,假设这是您的最新迁移,否则使用29843923 是您的迁移时间戳。)。
It would seem you capitalized the word
String
in your db migration. Try it with a lower case s and force the migration to run again (rake db:migrate:redo
, assuming that this was your latest migration, otherwise usewhere 29843923 is your migration timestamp.).
您执行了迁移吗?
Did you executed your migration?