Rails rails 入门中的 comment 如何编辑修改

rubybird · February 05, 2013 · Last by rubybird replied at February 18, 2013 · 3173 hits

初学 Rails,根据入门介绍,建立了入门的 blog。入门里介绍了如何创建一个 comment。可是创建后,如何修改和删除呢?

我尝试在 controllers/comments_controller.rb 中添加了一个方法

def edit
  @post = Post.find(params[:post_id])
  @comment = @post.comments.find(params[:id])

end

然后在 comments/_form.html.haml 中添加了

= form_for([@post]) do |f|
  - f.fields_for :comments do |comment_form|
    .field
      = comment_form.label :commenter
      %br/
      = comment_form.text_field :commenter
    .field
      = comment_form.label :body
      %br/
      = comment_form.text_area :body
    .actions
      = comment_form.submit

在 posts/show.html.haml 中添加一个编辑连接

= link_to 'Edit', edit_post_comment_path(comment)

创建一个 post 和一个 comment 后,点击上面的 Edit 进入,发现comment 的提交表格中的各个域都是空的,更像是创建一个新的 comment,而不是编辑

各位,有什么办法进行编辑 comment 不?同时,又怎么加删除 comment 的功能?

刚刚看到了删除的功能,但是在 post 下编辑 conmment,还是没有发现

2 Floor has deleted

从你目前给的信息,有个疑问 f.fields_for :comments 你这么写是一对多关系吧?那么@post下面你到底要显示哪一条 comment?

增加删除的方法 @comment = Comment.find(params[:id]) @comment.destroy 路径看 rake routes

参考这个:http://stackoverflow.com/questions/9480741/what-variable-should-i-place-in-this-form-to-edit-a-comment-rails

把 app/views/comments/_form.html.haml 改为

= form_for([@post, @comments]) do |f| 
  .field
    = f.label :commenter
    %br/
    = f.text_field :commenter
  .field
    = f.label :body 
    %br/
    = f.text_area :body
  .actions
    = f.submit 

然后在 app/controllers/posts_controller.rb 的 show 中添加

@comments = @post.comments.build

在 app/controllers/comments_controller.rb 的 edit 中修改如下

def edit
  @post = Post.find(params[:post_id])
  @comments = @post.comments.find(params[:id])
end

现在可以编辑了,感谢大家

You need to Sign in before reply, if you don't have an account, please Sign up first.