0

Rail App を実行すると、以下のエラーが発生します。Rails が 1 ではなく 0 からコメントを表示しているためだと思います。レコード 0 は存在しません。私がしたいのは、各コメントを編集できるようにすることだけです。

エラーは、ネストされたリソースへのリンクを作成する方法 (つまり、投稿からのコメントへのリンク) にあると思います。

エラー

「ルートが一致しません {:action=>"show", :controller=>"comments", :post_id=>1, :id=>nil} 使用可能なルートの詳細については、rake ルートを実行してみてください。」

show.html.erb:

<% @post.comments.each do |c| %>
<p>
  <b><%=h c.name %> said:</b><br />
  <%= c.created_at %>
</p>

<p>
  <%=h c.body %>
</p>

<p>
  <%=h c.id %>
</p>

<%= link_to 'test', post_comment_path(:post_id => @post.id, :id => c.id) %> |

<%#= link_to 'Edit', edit_post_comment_path(:id => @comment.id,
                                           :id => @post.id) %>

<%= link_to 'Comment', [@post, :comments ] %> |
<%= link_to 'Edit', edit_comment_path(@comment) %> |
<%= link_to 'Back', comments_path %>

この行を削除すると、エラーはなくなります。

<%= link_to 'test', post_comment_path(:post_id => @post.id, :id => c.id) %> |

rakes ルートの出力:

   C:\RUBY\RailsInstaller\Ruby1.9.3\bin\ruby.exe -e  $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)
    C:\RUBY\RailsInstaller\Ruby1.9.3\bin\rake routes
          posts_list GET    /posts/list(.:format)                       posts#list
       post_comments GET    /posts/:post_id/comments(.:format)          comments#index
                     POST   /posts/:post_id/comments(.:format)          comments#create
    new_post_comment GET    /posts/:post_id/comments/new(.:format)      comments#new
   edit_post_comment GET    /posts/:post_id/comments/:id/edit(.:format) comments#edit
        post_comment GET    /posts/:post_id/comments/:id(.:format)      comments#show
                     PUT    /posts/:post_id/comments/:id(.:format)      comments#update
                     DELETE /posts/:post_id/comments/:id(.:format)             comments#destroy
               posts GET    /posts(.:format)                            posts#index
                     POST   /posts(.:format)                            posts#create
            new_post GET    /posts/new(.:format)                        posts#new
           edit_post GET    /posts/:id/edit(.:format)                   posts#edit
                post GET    /posts/:id(.:format)                        posts#show
                     PUT    /posts/:id(.:format)                        posts#update
                     DELETE /posts/:id(.:format)                        posts#destroy

   Process finished with exit code 0

アップデート:

以下が機能するようになりました。リンク内で id 値を渡す必要がありました。

<%= link_to 'Edit', edit_post_comment_path(@post.id, c) %>

<%= link_to 'Destroy', [c.post, c], :confirm => 'Are you sure?', :method => :delete %>
4

1 に答える 1

0

リンク生成のためにこのコードを試してください

<%= link_to 'test', post_comment_path(@post, c) %>

あるいは

<%= link_to 'test', [@post, c] %>
于 2012-09-18T20:44:31.777 に答える