0

そのため、アクセスしようとするhttp://127.0.0.1:3000/users/1/posts/17とエラーが発生します

undefined method `post_comments_path' for #<#<Class:0x007fece23212a8>:0x007fece2a7c110>

Extracted source (around line #1):

1: <%= form_for([@post, @comment]) do |f| %>
2: 
3:  <%= f.label :name %>
4:

これは私のファイルを参照しています -/app/views/posts/_form_comment.html.erb where line #1 raised:

私の/app/views/posts/_form_comment.html.erbファイルは次のとおりです-

<%= form_for([@post, @comment]) do |f| %>

    <%= f.label :name %>
    <br />
    <%= f.text_field :name%>
    <br />
    <%= f.label :comment %>
    <br />
    <%= f.text_area :comment%>
    <br />

<%= f.submit "Create comment" %>

<% end %>

そして、これが私のPostControllerのshowメソッドです

def show
    @post = Post.find(params[:id])
    @comment = @post.comments.build
    @cl = Comment.where(:post_id => @comment[:post_id])

  end

/app/views/posts/_form_comment.html.erbここで、ファイルの内容が空の場合、ページは問題なくロードされることに注意してください。投稿のタイトルと内容を表示します。コメント欄以外。だから、コメント欄に何か問題があると思います。しかし、私は何を知りません。

重要な注意: これは以前には発生しませんでした。ユーザーモデルを投稿モデルに関連付けるまでは正常に機能していました。 どうもありがとう。

更新:私のルートは次のようになります-

  resources :users, only: [:show] do 
    resources :posts do
    end
    resources :comments, only: [:create]
  end
4

1 に答える 1

1

あなたは次のようなものを持っている必要があります

resources :posts do
  resources :comments
end

あなたのルートで。これはurl_for、ルートを正常に作成するために必要なものです[@post, @comment]

更新: 投稿とユーザーのネストされたリソースを含める

以下はまったく問題ありません

resources :posts do
  resources :comments
end

resources :users do
  resources :posts
end
于 2013-03-01T15:58:14.563 に答える