我正在尝试简单地删除数据库中的一条记录。
<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用于更新)