0

私はRails3を初めて使用し、rubyサイトのガイドに従って最初のブログアプリケーションを作成します。

ただし、アプリでは、モデル「コメント」に編集/更新/削除操作はありません。

それから追加しようとしましたが失敗しました。

モデル「コメント」のモデルを生成する代わりに、次を使用してモデル「コメント」のスキャフォールドを作成します。

rails generate scaffold Comment commenter:string body:text post:references

そして、post.showページで、次のように変更します。

<% @post.comments.each do |comment| %>
  <tr>
    <td><%= comment.commenter %></td>
    <td><%= comment.body %></td>
    <td><%= link_to 'Edit', edit_comment_path(comment) %></td>
    <td><%= link_to 'Destroy', comment, confirm: 'Are you sure?', method: :delete %></td>
  </tr>
<% end %>

それらはリストされていますが、「編集」または「削除」リンクをクリックすると、次のリンクにジャンプしようとします。

http://localhost:3000/comments/1

そして、私はエラーを受け取ります:

No route matches [GET] "/comments/3/edit" or

No route matches [DELETE] "/comments/3"

今はわかりません。

すぐに使えるデモはありますか?


アップデート:

ルート.rb内:

resources :posts do
  resources :comments
end

注:以下は私自身が手動で打ち明けたものです。

Railsによって生成される構成は次のとおりです。

resources :posts
resources :comments

コメントビルドフォームで、新しいコメントを作成するための投稿URLは「/ posts / 1 / comments」である必要があります。そうでない場合、投稿URLは「/ comments」になり、投稿とコメントは関連付けられません。

4

2 に答える 2

1

を設定しましたroutesか? あなたconfig/routes.rbが含む必要があります

resources :comments

rake routesリソース構成に基づいて、アプリケーションで使用可能な URL を確認するために実行することもできます。

編集:

デモについては、YouTube でこのビデオを試すことができます。ただし、これに関する多くのビデオを Web で見つけることができます。

編集:

2 つの方法でコメント リソースが必要なようです。投稿のネストされたリソースとトップレベルのリソースの両方として。だからあなたは一緒に2つのものを持つことができます

resources :posts do
   resources :comments
end
resources :comments
于 2012-08-30T08:20:42.187 に答える
0

リソースをネストしたため、次を使用する必要があります。

edit_post_comment_path(@post, comment)

さらに明確にするために:

<td><%= link_to 'Edit', edit_post_comment_path(@post, comment) %></td>
<td><%= link_to 'Destroy', post_comment_path(@post, comment), confirm: 'Are you sure?', method: :delete %></td>
于 2012-08-30T09:07:41.557 に答える