0

我是 Rails 开发的新手,但仍在尝试了解它的构建块。在运行这个简单的代码时,我收到以下错误

undefined method `home_home_path' 

它来自这一行 <%= form_for(@homes) do |f| %> 在 .html.erb 文件中。这是我的完整代码,我做错了什么?

我有家庭控制器文件

  def index
    @homes = Home.all
  end

  def show
    @home = Home.find(params[:id])
  end

  def new
    @home = Home.new
  end

  def create
    @home = Home.new(params[:home])
    @home.save
  end

Homes.rb 模型文件

class Home < ActiveRecord::Base
  attr_accessible :email, :message, :name
end

意见/家园/index.html.erb

# this will show all the data
<% @homes.each do |home| %>
    <%= home.name %><br />
    <%= home.email %> <br />
    <%= home.message %><br />
<% end %>
<br />

# this is a form where you will new records
<%= form_for(@homes) do |f| %>
    <%= f.text_field :name %>
    <%= f.text_field :email %>
    <%= f.text_area :message %>
    <%= f.submit %> 
<% end %>
4

2 回答 2

1

你应该使用:

<%= form_for(@home) do |f| %>

(单数)

如果你想在 index.html 中添加一个表单,记得在你的控制器 index 方法中实例化一个新的 home 对象:

 def index
    @homes = Home.all #For displaying all the homes
    @home = Home.new  #For your form
 end
于 2013-03-11T06:58:49.540 回答
1

@homes是一个数组对象。我不太确定 Rails 如何从中推断出 url 但正在运行

url_for Home.limit(2).all

也会给你同样的错误。

解决方案是将@homes 更改为Home.new@home = Home.new在您的控制器中声明并在表单中使用@home。

form_for Home.new

或者

# controller
def index
  @homes = Home.all
  @home = Home.new
end

# view
form_for @home
于 2013-03-11T06:58:58.363 回答