だから私はこれについてのスタック上の他の記事を見てきましたが、多くの場合、人々は @post = post.new をしていません。複数形を使用する場所を読みました...??
ディスカッションコードでこのエラーが発生する方法:
モデル
class Discussion < ActiveRecord::Base
has_many :comment
belongs_to :author
attr_accessible :author_id, :content, :title
validate :comment, :presence => true
validate :title, :presence => true
end
ディスカッション コントローラー
class DiscussionsController < ApplicationController
def index
@discussion = Discussion.new
@discussions = Discussion.all
end
def create
@discussion = Discussion.create(params[:discussion])
if @discussion.save
redirect_to tasks_path, :flash => {:success => 'Created a new discussion'}
else
redirect_to tasks_path, :flash => {:error => 'Failed to create a discussion'}
end
end
end
ディスカッションフォーム
<%= form_for @discussion do |f| %>
<p><%= f.label :title %>
<%= f.text_field :title %></p>
<p><%= f.label :content %>
<%= f.text_area :content %></p>
<% end %>
ディスカッション ルート
resources :discussions do
resources :comments
end
タスクフォームを本質的に同じように設定しているため、私が知る限り、これを正しく行っていますが、コードを何時間も見て、グーグルで他の例を試してみたところ、次のようになりました。
undefined method `model_name' for NilClass:Class
Extracted source (around line #1):
1: <%= form_for @discussion do |f| %>
2:
3: <p><%= f.label :title %>
4: <%= f.text_field :title %></p>
これは、コントローラーから何かが失われていることを意味するはずです...それはスペルミスと同じくらいばかげていますか? >.>