2017-09-02 5 views
0

記事に新しいコメントを追加しようとしているときにエラー(NoMethodError)が表示されていますが、問題は未定義のメソッド` comments_path'これは私がコードファイルにコードファイルで見つからない未定義のメソッド `comments_path '

を見つけることができません

注助けてください:問題は、私はエラーが何かを指しているにも私は、このエラーについて検索しようとしましたが、私が見つけた結果は関係ありませんでした を見つけることができません。

エラーは以下の通りです:#コメントで

NoMethodError新しいライン#1が上げ 表示/home/abc/my_ruby_projects/myblog3/app/views/comments/_form.html.erb:

未定義のメソッド `comments_path 'は#<#:0x007fb57888bf28> ですか? (ライン#1の周り)font_path 抽出されたソース:テンプレートインクルージョンの

<%= form_with model: @comment do |form| %> 
    <% if comment.errors.any? %> 
    <div id="error_explanation"> 
     <....> 
     <ul> 

トレース:アプリ/ビュー/コメント/ new.html.erb

Rails.root:/ホーム/ ABC/.../myblog3

下図のように、私は記事&コメントのネストされたルートを定義しています

resources :articles do 
    resources :comments 
    end 

私のルート以下に示すように、正しいようだ:

  Prefix Verb URI Pattern          Controller#Action 
     rails_admin  /admin           RailsAdmin::Engine 
    article_comments GET /articles/:article_id/comments(.:format)   comments#index 
        POST /articles/:article_id/comments(.:format)   comments#create 
new_article_comment GET /articles/:article_id/comments/new(.:format)  comments#new 
edit_article_comment GET /articles/:article_id/comments/:id/edit(.:format) comments#edit 
    article_comment GET /articles/:article_id/comments/:id(.:format)  comments#show 
        PATCH /articles/:article_id/comments/:id(.:format)  comments#update 
        PUT /articles/:article_id/comments/:id(.:format)  comments#update 
        DELETE /articles/:article_id/comments/:id(.:format)  comments#destroy 
      articles GET /articles(.:format)        articles#index 
        POST /articles(.:format)        articles#create 
     new_article GET /articles/new(.:format)       articles#new 
     edit_article GET /articles/:id/edit(.:format)      articles#edit 
      article GET /articles/:id(.:format)       articles#show 
        PATCH /articles/:id(.:format)       articles#update 
        PUT /articles/:id(.:format)       articles#update 
        DELETE /articles/:id(.:format)       articles#destroy 

答えて

0

あなたのフォームは、コメント更新を送信できるルートを探しています。

あなたのルートの設定は、おそらく今、あなたは、これはそれが

rake routes 

を探しています。そして、あなたが持つCommentsControllerが必要になりますcomments_path表示されたルートを一覧表示する

resources :comments 

コマンドラインコールのようなものを必要としますポストバックを処理する更新メソッド/アクション。

class CommentsController 
    def edit 
    end 

    def update 
    # save data 
    end 
end 
+0

ご協力いただきありがとうございます。 実際に私はリソースを持っています:ルートに既にコメントがあり、コントローラにはアクションがあります。ここで問題は新しいコメントであり、主にショーコメントメソッドではありません。 routes.rb&rails routes cmdに関する最新情報を確認してください。 –

+0

あなたの部分は@commentとコメント(no @)を混在させているようです...あなたの外部ビューはコメント変数を定義していますか、それは@commentでもかまいませんか? –

+0

私は多分あなたが混乱していると思います...あなたのルートはネストされたリソースとしてコメントにアクセスするように設定されていますが、あなたのフォームはそうではありません。あなたのルートを平らにして(独自のリソースをコメントしてください)、うまくいくかもしれません。代わりに、bang bangのアプローチと記事モデルを介して保存されているネストされた属性の設定を試すこともできますが、私はあなたのforn構造を再考する必要があるでしょう。 –

0

あなたは私はあなたがArticleは多くのcommentsを持つネストされたリソースを持っている想像して記事にコメントを追加しようとしている場合。

resources :articles do 
    resources :comments 
end 

とあなたの/models.article.rbモデルでaccept_nested_attributesがあると仮定:今、あなたの/config/routes.rbのようなエントリを持っているでしょう。配線する際、私はそれが役に立つrails routesコマンドを使用して見つけることが、彼らはあまりにも多くの成長後の代わりgrepに出力をパイプI」

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

は、今すぐあなたのビューで、通常はフォームは次のようになるはずですdはむしろ開発中の宝石sextantを使用します。

+0

ご協力いただきありがとうございます。実際に私はリソースを持っています:あなたが予想した通りにルートにコメントがあり、コントローラにアクションがあります。 私はaccept_nested_attributes(ガイドのことを見ていない)レール5で 、私がいただデフォルトはありません:(コメントの部分には、使用して足場を) '<%= * * form_with **モデル:@comment do | form | %> ' routes.rb&rails routes cmdに関する最新情報を確認してください。 –

関連する問題