ruby on rails-当我尝试删除一条记录时,它会创建一个新记录



我正在尝试简单地删除数据库中的一条记录。

<b> <%= button_to "Cancel your invitation", { :controller=>"invites", :method => 'destroy', :id => invite.id },
:confirm => "Are you sure you want to delete this invite?" %></b>

我指定了控制器,因为我是从用户视图执行此操作的。

当我单击按钮时,它会为新记录创建一个空白条目。那么,当我指定了destroy方法时,它为什么要使用create方法呢?

更多内容:我的配置/路由尽可能简单:

资源:邀请

我的控制器也很基本:

  def create
    @invite = Invite.new(params[:invite])
    if @invite.save
      redirect_to current_user
    else
      redirect_to root_path
    end
  end

  def destroy
    Invite.find(params[:id]).destroy
    redirect_to current_user
  end

我认为,您需要使用delete方法而不是destroy。

您滥用了这些方法。应该是:

<b>
  <%= button_to "Cancel your invitation", invite, :confirm => "Are you sure you want to delete this invite?", :method => :delete %>
</b>

有2点。

1) 对于resources :invites,销毁方法需要delete。如果不将:method => :delete传递给button_to,默认情况下将使用:method => :post,这是创建方法。这就是为什么你创造了一个新的记录而不是摧毁它

2) 由于您正在使用资源,您可以更好地选择路线,而不是{:controller => "invites", :action => "destroy", :id => invite.id}(注意,它是:action

您可以使用invite_path(invite)或仅使用invite,就像我上面的例子一样。对于:method => :delete,这为您提供了销毁方法。(因此:post用于创建,:put用于更新)

相关内容

  • 没有找到相关文章

最新更新