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

时间:2011-10-16 20:08:37

标签: javascript ruby-on-rails ruby-on-rails-3

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

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

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

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

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

但是当我鼠标悬停时,我看到:“localhost / users / 2”(例如) 当我点击删除链接时,它会将我引导至用户的个人资料。我没有得到任何确认窗口,也没有进行任何操作(删除)。这就像是他们个人资料的链接而已。 我使用Chrome但在Firefox中是相同的。

这就是我所拥有的:

1)安装了宝石“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 %>

在视图来源中,我看到:

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

4)在users_controllers.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)在routes.rb(来自配置)我有:

resources :users

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

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

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

感谢。

5 个答案:

答案 0 :(得分:7)

尝试使用

  <%= javascript_include_tag "application" %>

而不是:默认

答案 1 :(得分:4)

尝试将其切换为button_to“删除”而不是link_to“删除”当没有其他任何内容时,这对我有用

答案 2 :(得分:0)

确保您的routes.rb文件中包含resources :users。这应该给你基本的CRUD路由。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

我最近遇到过这个问题。尝试查看

config/application.rb:

让我们看看是否有字符串

Rails.logger = Logger.new(STDOUT)

因此,不编译或加载js库。因此,方法method:: delete不起作用。尝试删除它。