Laravel 4 restful使用资源控制器删除记录

Laravel 4 restful使用资源控制器删除记录,laravel,laravel-4,Laravel,Laravel 4,我不熟悉Laravel框架,但我真的很喜欢它。 我最大的问题是我一直在搜索如何使用资源控制器删除单个记录 控制器方法: public function destroy($id) { $department = Department::find($id); $department->delete(); } 删除我尝试过的链接: <a class="btn btn-xs btn-danger" data-method="delete" href="{{ URL::to(

我不熟悉Laravel框架,但我真的很喜欢它。 我最大的问题是我一直在搜索如何使用资源控制器删除单个记录

控制器方法:

public function destroy($id) {
    $department = Department::find($id);
    $department->delete();
}
删除我尝试过的链接:

<a class="btn btn-xs btn-danger" data-method="delete" href="{{ URL::to('department/' . $department->id) }}"><i class="icon-remove"></i></a>

Javascript:

<script type="text/javascript">
$(function(){
    $('[data-method]').append(function(){
        return "\n" +
        "form action='" + $(this).attr('href') + "' method='post' style='display: none;'>\n" + 
        "<input type='hidden' name='_method' value='"+$(this).attr('data-method')+"'>\n" +
        "</form>\n"
    })
    .removeAttr('href')
    .attr('style', 'cursor: pointer;')
    .attr('onclick', '$(this).find("form").submit();');
});

$(函数(){
$(“[data method]”)。追加(函数(){
返回“\n”+
“表单操作=”+$(this.attr('href')+“'method='post'style='display:none;'>\n”+
“\n”+
“\n”
})
.removeAttr('href')
.attr('style','cursor:pointer;')
.attr('onclick','$(this.find(“form”).submit();');
});

现在,当我点击删除链接时,它不起作用。 任何关于我做错了什么的想法,我已经搜索了这么长时间。

用于触发您的单击,而不是表单创建/提交:

$(document).on("click", "[data-method]", function(e) {
    e.preventDefault();

    $.post($(this).attr('href'), {/* the id goes here */});
});
通过CSS应用光标样式。我必须承认,我不确定laravel是否希望HTTP删除而不是post。我认为您没有提交要删除的部门的id

[编辑] 由于laravel希望HTTP删除,因此您不能使用$.post()速记,而是:

destroy()
将在
DELETE
请求中调用,而不是在
POST
请求中调用

所以试试看

<a class="btn btn-xs btn-danger" onclick="deleteDepartment($department->id)" href="javascript:void(0)"><i class="icon-remove"></i></a>

谢谢大家的回答,我只是忘记了开头。<创建表单时,我被错误地写了:

"form action='" + $(this).attr('href') + "' method='post' style='display: none;'>\n" + 
而不是:

"<form action='" + $(this).attr('href') + "' method='post' style='display: none;'>\n" + 
“\n”+

在不使用javascript的情况下使用
。应该从
DELETE
请求调用destroy。现在您得到了答案,如果您不介意的话,我想指出您的代码存在的问题。为什么要在
domReady
中编写表单,而不是在后端?
style
onclick
属性也是如此。此外,您可以将
onclick
替换为
jQuery.click()
,原因很明显。但是主要的问题是:为什么不按照多个答案中的建议使用
jQuery.ajax()
?谢谢,这是一个小错误。我只是忘了在表单声明的开头,即“form blah blah”,而不是“Using _methodyou can spoof HTTP methods in laravel谢谢,这是一个小错误。我只是忘了在表单声明的开头,即“form blah blah”,而不是
"form action='" + $(this).attr('href') + "' method='post' style='display: none;'>\n" + 
"<form action='" + $(this).attr('href') + "' method='post' style='display: none;'>\n" +