0

私はRails開発に不慣れであり、それでもその構成要素を理解しようとしています。この単純なコードを実行しているときに、次のエラーが発生します

undefined method `home_home_path' 

この行から来ています<%= form_for(@homes)do | f | .html.erbファイルの%>。これが私の完全なコードです、私が間違っていることは何ですか?

HomesControllerファイルがあります

  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

views / homes / 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 メソッドで新しいホーム オブジェクトをインスタンス化することを忘れないでください。

 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 に答える