Ryan Batesのスクリーンキャストをフォローしようとしていますが、エラーメッセージが表示されます。私は次のことをしました:
1)テーブルを作成する
class CreateComments < ActiveRecord::Migration
def self.up
create_table :comments do |t|
t.references :commentable, :polymorphic => true
2)セットアップモデル
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
class Product < ActiveRecord::Base
has_and_belongs_to_many :categories
has_many :comments, :as => :commentable
class Category < ActiveRecord::Base
has_and_belongs_to_many :products
has_many :comments, :as => :commentable
3)コントローラーの表示アクションを変更します
class CategoriesController < ApplicationController
def show
@category = Category.find_by_permalink(params[:id])
@commentable = @category
@comment = Comment.new(:commentable => @category)
end
4)テンプレートviews / category/show.html.erbにフォームを追加します
<% form_for [@commentable, Comment.new] do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :content %><br />
<%= f.text_area :content %>
</p>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
5)その後、/ category/my-category-permalinkにアクセスしてエラーメッセージが表示されます
NoMethodError in Categories#show
undefined method `category_comments_path' for #<ActionView::Base:0x69a9254>
私が間違ったことを理解するのを手伝ってくれませんか。元のスクリーンキャストでは、ライアンはネストされた関連付けを使用して/ category / permalink / reviewsによってコメントにアクセスしますが、私はそれを必要としません。ポリモーフィックオブジェクトから直接コメントを書きたい。ありがとう