0

2 つのモデルがあります:Userコメントを行う (Devise が提供する) とAudio、彼らがコメントする です。各audios#showページには、そのオーディオのすべてのコメントを一覧表示し、別のコメントを送信するための小さなフォームを用意する必要があります。

作りましたAudio acts_as_commentable。それから私は確認しましたComment belongs_to :user、そしてUser has_many :comments

ルートについては、私は持っています

resources :audios do 
  resources :comments
end

次に、audios_controller で、

def show
  if user_signed_in?
    @comment = @audio.comments.new
  end
end

form_for(@comment)次に、「コメント」フィールドと送信ボタンを備えた簡単なフォームを作成しました。それでおしまい。

ページの読み込み時に発生するエラーは、未定義のメソッド 'comments_path'です。このエラーをググって、StackOverflow の応答を読み、form_for(@audio, @comment)代わりに試してみました。これにより、**不明な属性 'html' を書き込めません** というエラーが発生します。

私は少し困惑しています。モデルと関係をメモ帳にスケッチしましたが、経験が浅く、舞台裏での Devise など、完全には理解していないものを使用すると、ループに陥ります。誰かがこれらのルート/フォームに関するヒントをくれたら、私はそれが大好きです.

4

2 に答える 2

1

routes.rb には、次のものが必要です。

# routes.rb
resources :comments, :only => [:create, :destroy]

ルート:commentsは、コメント機能を追加しようとしているリソースの外側に単独で移動します。

次に、実行rake routesすると、次のように返されます。

$ rake routes
comments    POST        /comments(.:format)     comments#create
comment     DELETE  /comments/:id(.:format)     comments#destroy

これにより、comments_pathヘルパーとcomment_path(:id)ヘルパーが POST および DELETE リクエストを完了することができます。

このチュートリアルを確認してください。この gem を使用する必要があるときに大いに役立ちました: http://twocentstudios.com/blog/2012/11/15/simple-ajax-comments-with-rails/

于 2015-09-24T21:38:17.100 に答える
0

試す

form_for [@audio, @comment]

また

form_for @comment, url: audio_comment_path(@audio, @comment)
于 2015-09-21T12:06:01.817 に答える