我正在尝试简单删除数据库中的记录。
<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
答案 0 :(得分:2)
我认为,您需要使用delete方法而不是destroy。
答案 1 :(得分:1)
你误用了这些方法。它应该是:
<b>
<%= button_to "Cancel your invitation", invite, :confirm => "Are you sure you want to delete this invite?", :method => :delete %>
</b>
有2分。
1)对于resources :invites
,destroy方法需要delete
。如果不将:method => :delete
传递给button_to
,默认情况下会使用:method => :post
,即创建方法。这就是为什么你创建了一个新记录而不是销毁它。
2)当您使用资源时,您可以更好地选择路线,而不是{:controller => "invites", :action => "destroy", :id => invite.id}
(请注意它是:action
)
您可以像上面的示例一样使用invite_path(invite)
或invite
。使用:method => :delete
,这将为您提供destroy方法。 (所以:发布创建,发布更新)