为什么Delete链接不能在这个Ruby on Rails项目中工作?

Why Delete link doesn't work in this Ruby on Rails project?

本文关键字:Rails on 项目 工作 Ruby 链接 Delete 不能 为什么      更新时间:2023-09-26

我正在练习Michael Hartl的RoR教程项目:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book

我使用Ruby 1.9.2和Rails 3.1在Ubuntu 11.04与Apache和MySQL。

我现在在这里:http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#sec:destroying_users(在那里我有5个用户列表和一个删除链接为他们每个人,我是管理员)。

这是应该起作用的删除链接:

<%= link_to "delete", user, :method => :delete, :confirm => "You sure?",
                            :title => "Delete #{user.name}" %>

但是当我鼠标移到上方时,我看到这个:"localhost/users/2"(例如)当我点击删除链接时,它会引导我到用户的个人资料。我没有得到任何确认窗口,也没有采取任何行动(删除)。就像他们个人资料的链接,仅此而已。我使用的是Chrome,但在Firefox中也是一样的。

这是我的:

1)安装了gem "jquery-rails"

2)applications.js(来自app/assets/javascripts)有这些行:

//= require jquery
//= require jquery_ujs
//= require_tree .

3) application.html。Erb(来自app/views/layouts)有这些行:

<%= javascript_include_tag :defaults %>
<%= csrf_meta_tags %>

在view source中我看到:

  <script src="/assets/defaults.js" type="text/javascript"></script>
  <meta content="authenticity_token" name="csrf-param" />
  <meta content="njPO91rB7p3EtTblD4jf4rkCVt+M76SKUt0rQhHc+qY=" name="csrf-token" />
在users_controllers

4)。rb(从app/controllers)我有:

 before_filter :authenticate, :only => [:index, :edit, :update, :destroy]
 before_filter :correct_user, :only => [:edit, :update]
 before_filter :admin_user,   :only => :destroy
 def destroy
  User.find(params[:id]).destroy
  flash[:success] = "User destroyed."
  redirect_to users_path
 end
 private
  def admin_user
    redirect_to(root_path) unless current_user.admin?
  end

5)的路线。(从配置)我有:

resources :users

Delete链接有什么问题?我搜索了StackOverflow的答案,但显然我找不到一个适合我的情况。

在同一个RoR项目上,使用Ajax的关注/取消关注按钮工作得很好(现在不能在这里发布第二个链接,因为我刚刚注册到SO)。

那么,为什么链接不起作用呢?是Javascript问题还是其他我没看到的问题?

谢谢。

尝试使用

  <%= javascript_include_tag "application" %>

代替:defaults

尝试将其切换为button_to "delete"而不是link_to "delete"当没有其他方法时,这对我很有效

确保你的路由中有resources :users。rb文件。这将为您提供基本的CRUD路由。

在我目前的Rails 3.1项目中,我使用

<%= link_to 'Destroy', rest_datatype, :confirm => 'Are you sure?', :method => :delete %>

我最近遇到了这个问题。试着查看

config/application.rb:

让我们看看是否有字符串

Rails.logger = Logger.new(STDOUT)

因此,js库不会被编译或加载。因此,方法method:: delete不起作用。