`
CaiDeHen
  • 浏览: 94285 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

#77 Destroy Without JavaScript

阅读更多
If the user has JavaScript disabled, the "Destroy" link might not work properly. In this episode I will explore a number of ways to work around this issue.
<!-- projects/index.rhtml -->
<ul>
<% for project in @projects %>
  <li>
    <%=h project.name %>
    <%= link_to_destroy "Destroy", project_path(project), confirm_destroy_project_path(project) %>
  </li>
<% end %>
</ul>

<!-- projects/confirm_destroy.rhtml -->
<% form_for :project, :url => project_path(@project), :html => { :method => :delete } do |f| %>
  <h2>Are you sure you want to destroy this project?</h2>
  <p>
    <%= submit_tag "Destroy" %>
    or <%= link_to "cancel", projects_path %>
  </p>
<% end %>

# routes.rb
map.resources :projects, :member => { :confirm_destroy => :get }

# projects_controller.rb
def confirm_destroy
  @project = Project.find(params[:id])
end

# projects_helper.rb
def link_to_destroy(name, url, fallback_url)
  link_to_function name, "confirm_destroy(this, '#{url}')", :href => fallback_url
end/* application.js */
function confirm_destroy(element, action) {
  if (confirm("Are you sure?")) {
    var f = document.createElement('form');
    f.style.display = 'none';
    element.parentNode.appendChild(f);
    f.method = 'POST';
    f.action = action;
    var m = document.createElement('input');
    m.setAttribute('type', 'hidden');
    m.setAttribute('name', '_method');
    m.setAttribute('value', 'delete');
    f.appendChild(m);
    f.submit();
  }
  return false;
}
分享到:
评论

相关推荐

    JavaApplet与JavaScript

    ### JavaApplet与JavaScript #### 6.1 JavaApplet ##### 6.1.1 JavaApplet概述 **Applet 类层次结构:** JavaApplet 的基础是 `java.applet.Applet` 类,它是从 `java.awt.Panel` 继承而来的一个特殊的图形组件。...

    destroy

    标题“destroy”所指的可能是一款名为“桌面破坏”(Desktop Destroy)的软件,它作为一个发泄工具,让用户可以通过虚拟的方式“砸桌面”,从而在电脑上体验一种减压的乐趣。这款软件的设计理念是为了提供一种轻松的...

    如何检测Unity3D中的Gameobject的destroy事件来触发其他操作?2

    在Unity3D中,开发游戏时常常需要监听游戏对象(GameObject)的生命周期事件,特别是当对象被销毁(Destroy)时,可能需要执行某些清理工作或触发相关联的逻辑。标题和描述提到的问题是关于如何在Gameobject被销毁时...

    deePool高效的JavaScript对象池

    5. 销毁对象池:在不再需要对象池时,使用`pool.destroy()`清理所有对象并释放资源。 ### 总结 DeePool通过实现JavaScript对象池,为开发者提供了一种优化内存使用、提高程序运行效率的有效手段。尤其在需要大量...

    可扩展的Javascript架构-中文版

    ### 可扩展的JavaScript架构详解 #### 一、引言 在《可扩展的JavaScript架构》这份由雅虎资深工程师分享的PPT中,我们能够深入了解到如何通过一种全新的视角来构建灵活且易于维护的Web应用程序。该PPT虽然篇幅不长...

    android 加载fragment防止destroy

    之前写了一个activity加载fragment的比较low,那个是放在xml布局里面动态控制show和hide实现的,这个代码也是通过show和hide实现显示和隐藏防止destroy,但是可以动态加载fragment实例,不用再把fragment放在xml布局...

    轻量的javascript视图层框架

    6. **视图管理**:利用视图的`show`和`hide`方法控制视图的显示和隐藏,以及`destroy`方法清理不再使用的视图,防止内存泄漏。 **三、Pocket与其他框架的比较** 虽然Pocket相对较轻量,但它并不逊色于其他流行的...

    Spybot - Search and Destroy v1.5.2.19 RC 多国语言版

    SpyBot-Search & Destroy 是专门用来清理间谍程序的工具。一些间谍程序随着共享软件安装到您的电脑中,监视您的电脑运行。到目前为止,他已经可以检测一万多种间谍程序 (Spyware),并对其中的一千多种进行免疫处理...

    algod-ASA:Algorand ASA和交易演示

    a LBLP7MHECZ5FL2JVRCDPLXN25WW3CLQLHDLSAUWNV4CGYAHYBHKNY2WNS4 ## Launch Sandboxcd沙箱./sandbox向上## destroy Sandboxcd沙箱./sandbox向下## Create a token after that you do the installation节点assetCr

    extjs核心api详解

    此方法尝试销毁传入的所有对象,包括DOM节点、事件监听器等,并调用它们的`destroy`方法(如果存在的话)。 **示例代码:** ```javascript var el = document.createElement('div'); Ext.destroy(el); ``` ##### ...

    Javascript框架Script.aculo.us的英文文档

    - `Sortable.destroy`:销毁一个可排序的列表。 - `Sortable.serialize`:将当前排序结果序列化成字符串,用于提交表单。 ##### 4.2 自动完成 - **Autocompleter.Local/Autocompleter.Base/Ajax.Autocompleter**...

    javascript控件

    源码中的“destroy”判断可能是一个错误,被指出后,开发者应当检查该方法,如果确实是个bug,应按照建议去除,以确保控件正常工作并避免潜在的问题。 压缩包中的文件名揭示了更多关于此JS控件的信息: 1. **...

    Hammerjs实现多点触摸手势的javascript库

    hammertime.destroy(); ``` 总结起来,Hammer.js是JavaScript开发中的一个重要工具,它简化了多点触摸手势的处理,让Web应用具备了更加丰富的用户体验。通过深入理解和熟练运用,开发者能够创建出具有高度互动性和...

    js各种兼容滚动条

    ps.destroy(); ``` ### 四、滚动条动画和性能优化 在处理滚动条动画时,为了确保流畅性,可以利用`requestAnimationFrame`来避免不必要的重绘和回流。同时,使用`throttle`和`debounce`函数来限制滚动事件的频率,...

    WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解

    本文对WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数的功能及区别做出了分析比对,有助于读者更好的对消息投递函数加以理解。详情如下: 一、WM_CLOSE、WM_DESTROY、WM_QUIT区别 WM_CLOSE:关闭应用程序窗口 WM_...

    destroy-mbstract.rar_USB编程_destroy mat

    标题中的“destroy-mbstract.rar_USB编程_destroy mat”可能是指一个关于USB编程的项目,其中包含了某种数据处理或分析的步骤,可能与MATLAB环境下的矩阵操作有关。"destroy mat"可能是一个函数或方法的名称,暗示了...

    PHP+HTML实现登出界面倒计时效果1

    这可以通过调用`session_start()`初始化Session,然后使用`session_destroy()`销毁当前Session中的所有数据。此外,还需要通过`setcookie()`函数删除与Session ID相关的Cookie,确保用户信息完全被清除。 ```php ...

    Android开发中webview原生与javascript之间的相互调用示例

    - `WebView的内存管理`:适时调用`clearCache()`、`clearHistory()`、`destroy()`释放资源。 8. **示例代码**(`JavaAndJs`目录中的代码可能包含以下内容) - `MainActivity.java`: 创建WebView,设置WebSettings...

    acsociative_destroy.rar_MATLAB destroy_android开发_butaaa_spiderv

    标题中的“acsociative_destroy.rar”可能是一个错误的拼写,根据上下文,可能是与MATLAB和Android开发相关的项目文件。"MATLAB destroy_android开发"这部分描述可能指的是使用MATLAB进行Android应用程序的开发或者...

Global site tag (gtag.js) - Google Analytics