`
sunfengcheng
  • 浏览: 183598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在页面中添加 DOM 元素

阅读更多
[size=large][color=green]在页面中添加 DOM 元素

  当你需要向页面表单添加新的元素 而不想响应服务器和刷新页面
。 比如我们经常 使用的附件上传 , 我们并不想上传一个附件的时候可以添加附件, 反正我们不能为了添加一个 附件这么简单的事情还要相应服务器来刷新页面把。 这里就来举个很简单的例子, 希望各位i能举一反三,触类旁通。
  解决方案:
    使用 link_to_remote 这个 javascript 辅助方法,
      在控制器的布局将 Prototype 库包含进去。
 
app/views/layouts/upload.rhtml:

<html>
  <head>  
    <title>File Upload</title>
    <%= javascript_include_tag 'prototype' %>
  </head> 
  <body>  
    <%= yield %>
  </body> 
</html>


现在在视图中放置一个 link_to_remote 的调用,这个调用应该包含你希望更新页面元素的id , 需要被激发的控制器动作和新元素插入的位置。
app/views/upload/index.rhtml:

<h1>File Upload</h1>

<% if flash[:notice] %>
  <p style="color: green;"><%= flash[:notice] %></p>
<% end %>

<% form_tag({ :action => "add" }, 
                     :id => id, :enctype =>
                     "multipart/form-data") do %>
    <b>Files:</b>
    <%= link_to_remote "Add field",
                       :update => "files",
                       :url => { :action => "add_field" },
                       :position => "after" %>;
    <div id="files">
      <%= render :partial => 'file_input' %>
    </div>  
    <%= submit_tag(value = "Add Files", options = {}) %>
<% end %


创建一个带有输入框的局部模版
app/views/upload/_file_input.rhtml 

<input name="assets[]" type="file"><br />

最后,在控制器中加入 Add_field 动作, 让他返回包含新文件输入框的HTML,需要做的就是一个HTML片段。

app/controllers/upload_controller.rb:

class UploadController < ApplicationController

  def index
  end

  def add
    begin   
      total = params[:assets].length
      params[:assets].each do |file|
        Asset.save_file(file)
      end     
      flash[:notice] = "#{total} files uploaded successfully" 
    rescue  
      raise   
    end
    redirect_to :action => "index" 
  end 

  def add_field
    render :partial => 'file_input'
  end
end


app/models/asset.rb:

class Asset < ActiveRecord::Base

  def self.save_file(upload)
    begin   
      FileUtils.mkdir(upload_path) unless File.directory?(upload_path)

      bytes = upload
      if upload.kind_of?(StringIO)
        upload.rewind
        bytes = upload.read 
      end     
      name = upload.full_original_filename
      File.open(upload_path(name), "wb") { |f| f.write(bytes) }
      File.chmod(0644, upload_path(name) ) 
    rescue  
      raise   
    end
  end
  def self.upload_path(file=nil)
    "#{RAILS_ROOT}/public/files/#{file.nil? ? '' : file}" 
  end 
end
[/color][/size]
2
0
分享到:
评论

相关推荐

    unigrid添加html5 dom元素.rar

    标题"unigrid添加html5 dom元素.rar"暗示了这个压缩包可能包含一个教程或代码示例,指导如何在使用Unigrid组件的Delphi项目中集成HTML5 DOM元素。Unigrid是Delphi中用于显示和编辑表格数据的第三方组件,它允许...

    .遍历DOM元素

    DOM元素遍历是Web开发中的基础技能,用于访问和操作网页上的每一个节点。本篇文章将深入探讨如何遍历DOM元素,包括不同遍历方法、遍历的应用场景以及注意事项。 一、DOM遍历方法 1. 前向遍历(深度优先遍历) ...

    JS操作DOM元素属性和方法大全

    **JS操作DOM元素属性和方法大全** 在JavaScript中,DOM(Document Object Model)是一种标准,用于表示HTML或XML文档的结构,并提供了与这些文档交互的方法。DOM是浏览器提供的一种接口,使得JavaScript能够读取、...

    jQuery鼠标拖动旋转DOM元素插件

    总的来说,Propeller.js是一款强大的jQuery插件,它利用jQuery的强大功能,使得网页中的DOM元素可以响应鼠标的拖动而旋转,为用户带来生动的交互体验。通过理解和实践,开发者可以轻松地将其集成到自己的项目中,...

    解决vue页面DOM操作不生效的问题

    开发者可以把在nextTick中放入需要在数据更新后的DOM操作,这样可以确保操作是在更新循环结束后执行的,此时的DOM是最新的状态,可以正确获取到更新后的DOM元素。 例如,当使用ElementUI的树形组件来渲染结构,并且...

    JavaScript DOM元素常见操作详解【添加、删除、修改等】

    DOM(文档对象模型)是JavaScript操作网页的基石。...无论是获取、添加、删除还是修改DOM元素,都是通过操作DOM树中的节点来实现的。掌握这些基本操作,能够帮助开发者更加灵活地控制网页上的内容。

    elementUI滚动条,点击dom元素滚动到指定位置.pdf

    在实际应用中,我们可以根据需要添加更多的功能和配置选项来满足不同的需求。 结论 ElementUI 滚动条点击 DOM 元素滚动到指定位置的实现细节需要考虑多个方面,包括滚动条的状态、事件处理函数和动画效果。通过...

    谷歌获取网页dom的插件

    1. 实时DOM查看:提供一个界面,让用户在浏览器中直观地看到当前网页的DOM结构。 2. 元素选择器:支持CSS选择器或者其他方式快速定位到目标元素。 3. 属性检查:显示选定元素的所有属性,包括ID、class、样式、事件...

    html dom 底层 javascript

    3. **添加元素**:使用`createElement()`创建新的DOM节点,然后用`appendChild()`将其添加到文档中。 4. **删除元素**:使用`removeChild()`从文档中移除节点。 #### DOM 中的重要数据类型 在DOM中,有几个关键的...

    跨frame操作dom元素

    "跨frame操作DOM元素"是一个重要的技术主题,尤其在处理多框架网页时。本文将深入探讨这个主题,并结合标签“源码”和“工具”,为你揭示如何在不同frame之间交互和操作DOM。 首先,理解frame的概念至关重要。在...

    通过获取网页的DOM操作网页元素的软件源码

    在VB技术文章和教程中,通常会深入探讨如何利用DOM进行更复杂的操作,例如遍历DOM树、处理事件、动态添加和移除元素等。而www.cpu7.net和CSDN这样的平台提供了丰富的编程资源,帮助开发者解决问题和分享经验。 综上...

    在Vue中使用ref获取dom元素节点及组件内的数据和方法

    在Vue.js框架中,`ref`是一个非常重要的特性,它允许开发者引用Vue实例下的DOM元素或组件。通过`ref`,我们可以直接访问到这些元素或组件的实例,从而实现对它们的操作,包括读取数据、调用方法等。本文将详细讲解...

    DOM应用---遍历网页中的元素

    - 动画效果:通过遍历DOM元素并改变其样式,实现复杂的动画效果。 总结,遍历网页中的元素是DOM应用的核心技能之一,它为我们提供了对HTML结构的强大控制,无论是简单的页面操作还是复杂的交互逻辑,都离不开这一...

    jQuery添加删除DOM元素方法详解

    本文实例分析了jQuery添加删除DOM元素的方法。分享给大家供大家参考,具体如下: 介绍 DOM是Document Object Modeule的缩写,一般来说,DOM操作分成3个方面。 1、DOM Core DOM Core并不专属于javascript,任何一种...

    头歌教学实践平台 Web前端开发基础 JavaScript学习手册十四:HTML DOM-文档元素的操作(二)

    在这个部分,我们将学习更多关于DOM元素操作的方法和技巧。 首先,`getElementById()`是获取特定ID元素的常用方法。通过这个方法,我们可以直接根据元素的ID找到它,并对其进行操作,例如改变其内容、样式或属性。...

    ES6 DOM元素动画库插件

    在现代Web开发中,为了提升用户体验,动态效果的应用变得越来越普遍,其中DOM元素动画就是一种常见且有效的方式。"基于ES6的DOM元素动画库插件"就是这样一款工具,它允许开发者在DOM元素滚动进入视口时触发特定的...

    可配置的本地DOMUI元素挑选

    在"base-elements-master"中,可能包含了源代码、示例、以及如何在项目中引入和使用这些自定义DOM元素的文档。 为了深入理解这个主题,我们需要掌握以下关键知识点: 1. **DOM API**:理解如何通过JavaScript与DOM...

    JS添加或删除HTML dom元素的方法实例分析

    JavaScript提供了多种方式来添加和删除DOM元素,这些操作对于实现如用户交互、动态内容加载等功能至关重要。接下来,我们将详细探讨JavaScript添加和删除HTML DOM元素的方法,并结合实例进行分析。 ### 创建DOM元素...

    js表格操作,DOM实现数据动态增删查改

    在JavaScript中,我们可以使用`document.createElement()`方法创建新的表格元素,然后使用`appendChild()`将它们添加到页面上。 2. **数据绑定**:数据存储可以采用数组或对象的形式,其中每一项代表表格的一行。...

Global site tag (gtag.js) - Google Analytics