0

我有一个 Review 模型,它是 Publication 模型的嵌套资源。评论模型有 accept_nested_attributes_for review_comments。我想知道如何显示删除review_commment的删除路径?

<% @review.review_comments.each do |review_comment| %>
   <%= link_to "delete", ???,  method: :delete %>
<% end %>

评论.rb

has_many :review_comments, :dependent => :destroy
accepts_nested_attributes_for :review_comments, :allow_destroy => :true

review_comment.rb

belongs_to :review

出版物.rb

has_many :reviews

路线.rb

resources :publications do
  resources :reviews 
end

resources :review_comments

更新

def create
 @review_comment = ReviewComment.new(params[:review_comment])
  if @review_comment.save
    redirect_to @review_comment, notice: 'Review comment was successfully created.'
   ....
end

def destroy
  @review_comment = ReviewComment.find(params[:id])
  @review_comment.destroy
  redirect_to :back, notice: "Deleted" 
end

更新

 review_comments GET      /review_comments(.:format)                               review_comments#index
                       POST     /review_comments(.:format)                               review_comments#create
    new_review_comment GET      /review_comments/new(.:format)                           review_comments#new
   edit_review_comment GET      /review_comments/:id/edit(.:format)                      review_comments#edit
        review_comment GET      /review_comments/:id(.:format)                           review_comments#show
                       PUT      /review_comments/:id(.:format)                           review_comments#update
                       DELETE   /review_comments/:id(.:format)                           review_comments#destroy
4

2 回答 2

0

对于您的路线:

<%= link_to "delete", review_comment,  method: :delete %>


class ReviewCommentsController < ApplicationController
  def destroy
    @review_comment = ReviewComment.find(params[:id])
    @review_comment.destroy
    redirect_to review_comments_path # Or another path
  end
end
于 2013-09-16T11:27:59.563 回答
0

使用 GET 以外的任何方法的 link_to 实际上是一个坏主意,因为可以右键单击链接并在新选项卡/窗口中打开,并且因为这只是复制 url(而不是方法),所以它会因非获取链接而中断.

此外,链接被网页索引蜘蛛点击,即使有问题的链接可能只对登录用户可用(因此不是蜘蛛),但它仍然是不好的做法。

最好使用 button_to 代替,这会使 rails 生成一个迷你表单来产生相同的结果。

从实用的角度来看,按钮更好(出于上述原因),但从概念的角度来看,它们也更好:一般来说,链接应该“带你去某个地方”,而按钮应该“做某事”。最好将这两个基本功能分开。

像这样的东西,

button_to t('general.delete'), :review_comment_path(review_comment), :method => :delete, :confirm => t('review_comment.confirm_delete'), :title => t('review_comment.delete_question')
于 2013-09-16T11:34:01.160 回答