ruby-on-rails 这个Ruby on Rails销毁操作缺少了什么?

dfddblmv  于 2022-11-26  发布在  Ruby
关注(0)|答案(1)|浏览(119)

我正在学习Ruby on Rails,但我被卡住了。当我试图删除一个资源时,什么也没发生。看起来它只是刷新了页面。看看互联网上的其他地方,我现在猜测它与Javascript有关,但我不太确定是什么。
作为参考,我正在遵循本指南,并在第7.5节卡住了:https://guides.rubyonrails.org/getting_started.html#deleting-an-article
我已经在互联网上摸索了几个小时,现在试图找出这个问题,但没有任何结果。下面是我看过的其他问题的列表,我认为可能与此有关,但我还没有能够找到一个解决方案:Ruby on rails destroy not workingDestroy path not working in Ruby on Rails显示器
这是我在app/controllers/articles_controller.rb中的控制器操作

class ArticlesController < ApplicationController
  def show
    @article = Article.find(params[:id])
  end

  def destroy
    @article = Article.find(params[:id])
    @article.destroy

    flash[:success] = "The article has been destroyed."
    redirect_to articles_path, status: :see_other
  end
end

config/routes.rb非常简单

Rails.application.routes.draw do
  resources :articles
end

下面是我如何从app/views/articles/show.html.erb中的一个视图调用控制器操作。我看到了一些不同的符号来调用delete方法,它们似乎都不起作用。

<ul>
  <li>
    <%= link_to "Destroy", article_path(@article), data: {
                  turbo_method: :delete,
                  turbo_confirm: "Are you sure?"
                } %>
  </li>
  <li>
    <%= link_to "Delete", article_path(@article), :method => :delete %>
  </li>
  <li>
    <%= link_to "Defenestrate", article_path(@article), method: :delete %>
  </li>
</ul>

这些链接似乎什么也做不了。根据我在网上找到的一些东西,我试着在app/views/layouts/application.html.erb中包含这些行(不是同时)

<%= javascript_include_tag :defaults, 'data-turbolinks-track' => true %>
<%= javascript_include_tag "defaults", 'data-turbolinks-track' => true %>
<%= javascript_include_tag "application", 'data-turbolinks-track' => true %>

但它们都抛出类似的错误,类似于:

Sprockets::Rails::Helper::AssetNotFound in Articles#show
Showing app/views/layouts/application.html.erb where line #10 raised:
The asset "defaults.js" is not present in the asset pipeline.

我假设它指的是app/assetslib/assets中的某个位置,但我不确定。
我已经厌倦了将gem "jquery-rails"添加到Gemfile并在app/assets/config/manifest.js中包含以下行

//= require jquery
//= require jquery_ujs

但是......一切都没有用。我似乎完全被卡住了,所以我希望有人能给我指出正确的方向。作为参考,这里有一些版本

Rails 7.0.4
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
Fedora 37 (Server Edition)
46scxncf

46scxncf1#

尝试在rails 7中使用button_to

<%= button_to "Destroy", @article, method: :delete %>

相关问题