有两个模型: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
然后我写了一个带有'comment'字段和提交按钮的简单form_for(@comment)
表单。就是这样。
加载页面时出现的错误是未定义的方法'comments_path'。我用Google搜索了这个错误,阅读了StackOverflow响应,然后尝试了form_for(@audio, @comment)
。这得到错误**无法写入未知属性'html'。
我有点难过;我已经在我的记事本上勾勒出了模型和关系,但我没有经验,使用我不完全理解的东西,比如幕后的Devise,就是把我扔了一圈。如果有人能给我一些关于这些路线/表格的提示,我会很喜欢。
答案 0 :(得分: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/
答案 1 :(得分:0)
尝试
form_for [@audio, @comment]
或
form_for @comment, url: audio_comment_path(@audio, @comment)