0

すべての投稿がカテゴリの下にネストされている Rails ブログがあり、投稿の下にネストされているコメントを追加していますが、フォームがundefined method `post_comments_path'エラーをスローしています。

@posts を @categories.post のようにする必要があると思いますが、よくわかりません。

ルート

resources :categories do
  resources :posts, path: 'article' do
    resources :comments, :only => [:create]
  end
end

コントローラ

def create
    @post = Post.find(params[:post_id])
    @comment = @posts.comments.create!(params[:comment])
    redirect_to @post
end

意見

<%= simple_form_for [@post, Comment.new ], :remote => true do |f| %>
  <%= f.input :name %>
  <%= f.input :email %>
  <%= f.input :comment %>
  <%= f.button :submit %>
<% end %>
4

1 に答える 1

1

カテゴリを忘れているようです。カテゴリを指定する必要があります:

コントローラ

def new
  ...
  @category = Category.find(params[:category_id])
  ...
end

def create
    @post = Post.find(params[:post_id])
    @comment = @posts.comments.create!(params[:comment])
    redirect_to @post
end

意見

<%= simple_form_for [@category, @post, Comment.new ], :url => category_post_comments_path, :remote => true do |f| %>
  <%= f.input :name %>
  <%= f.input :email %>
  <%= f.input :comment %>
  <%= f.button :submit %>
<% end %>

または、次のようにルートからカテゴリを削除します。

ルート

resources :posts, path: 'article' do
  resources :comments, :only => [:create]
end
于 2013-09-10T08:19:55.153 に答える