草庐IT

javascript - Laravel 资源路由从 axios 中删除

coder 2024-01-05 原文

我想设置 axios 以使用资源路由删除记录:

axios.delete('/job-management', this.deletedata).then((res)=>{
    console.log(res);
})

对于我的路线,我有:

Route::resource('job-management', "PositionsController", [ 'as' => 'jobs']);

现在,在我的 PositionsController 中我有:

public function destroy(Positions $positions) {
    return $positions;
}

但是上面总是返回“不允许的方法”。如何使用 axios delete() 方法处理删除请求?

最佳答案

当我们尝试使用路由不支持的 HTTP 谓词向路由发送请求时,Laravel 会抛出 MethodNotAllowedHttpException。对于这个问题,我们看到这个错误是因为 JavaScript 代码向路径为 /job‑management 的 URL 发送了一个 DELETE 请求,该请求由仅支持 GETPOST 请求的路由。我们需要将 URL 更改为 Laravel 期望的足智多谋的 Controller 的传统格式。

该错误令人困惑,因为它隐藏了我们将请求发送到错误 URL 的事实。要了解原因,让我们看一下 Route::resource()(来自 documentation )创建的路由:

Verb        URI                             Action  Route Name
GET         /job-management                 index   job-management.index
GET         /job-management/create          create  job-management.create
POST        /job-management                 store   job-management.store
GET         /job-management/{position}      show    job-management.show
GET         /job-management/{position}/edit edit    job-management.edit
PUT/PATCH   /job-management/{position}      update  job-management.update
DELETE      /job-management/{position}      destroy job-management.destroy

如上所示,路径组件为 /job-management 的 URL 被传递给 Controller ​​的 index()store()不处理DELETE 请求的方法。这就是我们看到异常的原因。

要执行问题中所示的DELETE 请求,我们需要将请求发送到路径为 /job-management/{position} 的 URL,其中 {position} 是我们要删除的位置模型的 ID。 JavaScript 代码可能类似于:

axios.delete('/job-management/5', this.deletedata).then((res) => { ... })

我已将位置 ID 硬编码到 URL 中以清楚地说明这个概念。然而,我们可能想为这个 ID 使用一个变量:

let positionId = // get the position ID somehow
axios.delete(`/job-management/${positionId}`, this.deletedata).then((res) => { ... })

这种形式的 URL 使 Laravel 能够将 DELETE 请求路由到 Controller 的 destroy() 方法。上面的示例使用 ES6 template string literals因为问题中的代码表明我们正在使用支持此功能的 JavaScript 版本。请注意模板字符串周围的反引号 (`) 而不是标准引号。

关于javascript - Laravel 资源路由从 axios 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346709/

有关javascript - Laravel 资源路由从 axios 中删除的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  3. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  4. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  5. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  6. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  7. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  8. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  9. ruby-on-rails - 标准化文件名的字符串,删除重音和特殊字符 - 2

    我正在尝试找到一种方法来规范化字符串以将其作为文件名传递。到目前为止我有这个:my_string.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n,'').downcase.gsub(/[^a-z]/,'_')但第一个问题:-字符。我猜这个方法还有更多问题。我不控制名称,名称字符串可以有重音符、空格和特殊字符。我想删除所有这些,用相应的字母('é'=>'e')替换重音符号,并将其余的替换为'_'字符。名字是这样的:“Prélèvements-常规”“健康证”...我希望它们像一个没有空格/特殊字符的文件名:“prelevements_routin

  10. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

随机推荐