遵循Ruby-on-Rails教程并获取“销毁用户”不起作用

时间:2012-03-11 17:46:24

标签: ruby-on-rails ruby ruby-on-rails-3.2

我最近安装了Ruby on Rails 3.2并且一直在努力学习它。我一直在关注RoR 3.0教程(http://ruby.railstutorial.org/chapters/updating-showing-and-deleting-users#top),到目前为止一切顺利(是的,我知道有一个3.2)版本)。

目前我被困在第10.4.2节,该节教导如何添加链接以销毁用户。它说要添加代码

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

除了添加apps / view / layout / application / html / erb

之外
<%= javascript_include_tag :defaults %>

看起来这应该是正确的用户控制器中的destroy方法,正如教程所说,但它不适合我,我无法弄清楚为什么。它创建的链接只是/ user /:id。我查看了3.2教程中的相同部分,它是相同的方向(但没有javascript包含标记代码)。我无法按照该教程开始工作。所以我不确定为什么它不起作用或如何使它工作。

所以我们很清楚,而不是去这个用户控制器中的destroy方法,它转到/ user /:id这是show方法。

3 个答案:

答案 0 :(得分:5)

删除资源(您的案例中的用户)需要将jquery_ujs javascript文件包含在页面中。看到一个'show'动作被调用是很常见的,因为没有jquery_ujs没有发送指示HTTP DELETE动词的隐藏数据。

尝试显式插入jquery_ujs,如下所示:

<%= javascript_include_tag 'jquery_ujs' %>

看看会发生什么。

jquery_ujs被设计为'...用于Ruby on Rails框架的不显眼的脚本支持文件,但并不严格依赖于任何特定的后端。'。换句话说,它扫描文档,查看特殊data- *属性并根据这些属性执行各种操作,例如,附加隐藏的html元素,执行ajax请求等。

另请注意,为了使用jquery_ujs,还应引用jquery(之前)。

希望这有帮助。

答案 1 :(得分:1)

我的问题是我没有引用jquery。添加//=jquery修复了它。

答案 2 :(得分:0)

您好,您也可以试试这个:

application.html.erb:

<%= javascript_include_tag 'jquery_ujs' %>

OR

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js" %>

,您的链接代码应如下所示:

<%= link_to "<i class='icon-trash'></i> Delete".html_safe, user, :confirm => "Are you sure you want to delete this user? " + user.name + "?" ,:method => :delete%>

你的控制器应该是这样的:

def destroy
 @item = Item.find(params[:id])
 if @item.destroy
  redirect_to users_path, :notice => "Successfully deleted a user."
 else 
  redirect_to users_path, :notice => "Failed to delete a user."
 end
end