基本支架视图中没有方法错误?

发布于 2024-08-05 22:37:56 字数 1435 浏览 3 评论 0原文

我为具有单个属性的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海的爱人是光 2024-08-12 22:37:56

看来您在数据库迁移中大写了单词 String 。尝试使用小写 s 并强制再次运行迁移(rake db:migrate:redo,假设这是您的最新迁移,否则使用

 rake db:migrate:down VERSION=29843923 && rake db:migrate:up VERSION=29843923

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 use

 rake db:migrate:down VERSION=29843923 && rake db:migrate:up VERSION=29843923

where 29843923 is your migration timestamp.).

红ご颜醉 2024-08-12 22:37:56

您执行了迁移吗?

Did you executed your migration?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文