0

私は次のチュートリアルに従っただけで、うまく機能します。http://www.communityguides.eu/articles/6

しかし、私にとって彼が難しいことの1つは、編集です。

link_toに電話して編集しました

<%= link_to 'Edit', edit_article_comment_path(@article, comment) %>

その後、エラーのあるページが表示され、理由がわかりません。

NoMethodError in Comments#edit

Showing /home/jean/rail/voyxe/app/views/comments/_form.html.erb where line #1 raised:

undefined method `comment_path' for #<#<Class:0xa8f2410>:0xb65924f8>
Extracted source (around line #1):

1: <%= form_for(@comment) do |f| %>
2:   <% if @comment.errors.any? %>
3:     <div id="error_explanation">
4:       <h2><%= pluralize(@comment.errors.count, "error") %> prohibited this comment from being saved:</h2>

ここでコメント編集のフォーム

<%= form_for(@comment) do |f| %>
  <% if @comment.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@comment.errors.count, "error") %> prohibited this comment from being saved:</h2>

      <ul>
      <% @comment.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br />
    <%= f.text_field :title %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

これがコントローラーですArticlecontrollershow

 @article = Article.find(params[:id])
 @comments = @article.comments.find(:all, :order => 'created_at DESC')

コメントコントローラー編集

  def edit
    @comment = Comment.find(params[:id])
  end
4

1 に答える 1

1

ネストされたリソースのように見えるので、が含まれているcommentを指定する必要があります。例えば:articlecomment

<%= form_for [@article, @comment] do |f| %>

comment_pathトップレベルでコメントを公開するルートがないため、は未定義のメソッドです。rake routesどのルートが利用可能かを確認するために実行すると役立つ場合があります。

アップデート:

リンクした記事は、コメントのアクションのみを提供createします。delete編集操作をサポートする必要がある場合は、以下を変更してルートを変更する必要があります。

resources :comments, :only => [:create, :destroy]  

に:

resources :comments, :only => [:create, :destroy, :edit, :update]  

また、編集アクションと更新アクションを実装する必要があります。通常、編集ではフォームが表示され、更新ではフォームの送信が処理されます。@articleまた、編集ビューでそれが使用可能であることを確認する必要があります。

于 2012-08-20T19:55:02.917 に答える