rails应用ajax之二:使用rails自身支持

    考虑另一种情况:

1. 页面上半部分显示当前的所有用户,页面下半部分是输入新用户的界面;

2. 每当输入新用户时,页面上半部分会动态更新新加用户的内容;

    我们还是用ajax实现,不过这次用rails内部对ajax的支持,其中在服务器端返回一个js脚本,然后在客户端执行。

    新建user数据结构 rails g scaffold User name:string age:integer

    接着应用数据库视图 rake db:migrate

    修改index.html.erb的内容:

<h1>Listing Users</h1>

<ul id="users">
	<%= render @users%>
</ul>
<br />
<%= form_for(@user,remote:true) do |f|%>
	<%= f.label :name %><br \>
	<%= f.text_field :name %>
	<%= f.label :age %><br \>
	<%= f.text_field :age%>
	<%= f.submit %>
<% end %>

同时新建一个局部模板_users.html.erb:

<li><%= user.name%></li>
<li><%= user.age%></li>

接下来增加服务器端对js的支持,很简单:

  def index
    @users = User.all
    @user = User.new
    #puts "******* #{render @user} **********"
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.js {} #增加这一句
        format.json { render :show, status: :created, location: @user }
      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end

别忘了还要写服务器端的js脚本哦。在view下的users目录中新建一个create.js.erb文件:

$("<%= escape_javascript(render @user)%>").appendTo("#users");
<!--$("#users").append("<p>love</p>");-->

基本完成鸟。整个流程大体如下:

首先用户访问users/index页面,当输入name和age点击提交后会进入create Action,其中的format.js一句提供了ajax支持,它会在浏览器端执行create.js.erb的内容:把新建用户信息异步动态插入页面上半部分。

时间: 2024-08-02 03:34:36

rails应用ajax之二:使用rails自身支持的相关文章

关于rails响应ajax请求的问题

问题描述 不使用rails自带的javascript框架,在rails中直接响应浏览器发送来的ajax请求,请问该如何实现,谢谢 解决方案 浏览器端(VIEW文件中)用rails自带的prototype库来发送AJAX请求服务器端(controller)里面区分一下request的accept字段respond_to do |format| format.html{ #原先的逻辑 } format.xml{ #响应AJAX请求的逻辑 }end解决方案二:用你的js替换就可以了.如果说这个js没有

如何使用Selenium测试工具对Ruby on Rails和Ajax应用程序进行功能测试

验收测试(也称功能测试)是用来测试手工任务的功能的,但是手工测试这些任务可能很花时间,并 且容易出现人为的错误.在本文中,作者为架构师.开发人员和测试人员展示了如何使用 Selenium 测试 工具来自动化验收测试.通过自动化测试,可以节省时间,并消除测试人员所犯的错误.文中还给出了一 个例子,以演示如何将 Selenium 应用到现实中使用 Ruby on Rails 和 Ajax 的项目上. Web 应 用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操

Ruby on rails开发从头来(windows)(三十二)- Rails的配置文件

Rails的运行时配置是由config目录下的文件来控制的. 1.运行时环境(Runtime environment) 当开发者编写代码时,需求是多中多样的.在开发中你可能会需要很多的登录,加载变化过的代码.在测试时,你需要各个系统之间是隔离开的.在发布之前,你可能需要进行性能优化,并且时用户远离bug. 为了支持这一切,Rials有运行时配置的概念.每一个环境都拥有自己的一组配置,可以在不同的环境中运行同一个应用程序. 切换运行环境可以使我们不用修改代码就可以从开发切换到测试再切换到发布.怎样

对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解_jquery

虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或其它参数.同时在工作中,我们还会发现,有一些ajax请求的数据,对实时性要求不高,即使我们把第一次请求到的这些数据缓存起来,然后当相同请求再次发起时直接拿之前缓存的数据返回也不会对相关功能有影响,通过这种手工的缓存控制,减少了ajax请求,多多少少也能帮助我们提高网页的性能.本文介绍我自己关于这两方

Ruby On Rails学习笔记(3)——Rails程序由0到1

     正如Rails的理念一样,创建一个新的Rails应用程序的过程非常简单,下面就来看看如何从0到1建立一个全新的Rails应用程序.     1.启动InstantRails,打开其Rails应用程序管理器(Rails Application Manager):         2.创建一个名称为first的新的应用程序:              3.使用first应用程序中的脚本文件创建一个名称为hello的控制器:                   4.启动针对first应用程序

利用jquery.qrcode在页面上生成二维码且支持中文

 这篇文章主要介绍了利用jquery.qrcode在页面上生成二维码且支持中文.需要的朋友可以过来参考下,希望对大家有所帮助 实例如下:  代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www

link中如何颠倒一个二维数组?二维数组不支持revses吧?

问题描述 link中如何颠倒一个二维数组?二维数组不支持revses吧? link中如何颠倒一个二维数组?二维数组不支持revses吧? 解决方案 可以用select Enumerable.Range(0 arr.GetLength(1)).Select(x => Enumerable.Range(0 arr.GetLength(1)).Select(y => arr[x y]).Reverse().ToArray()).Reverse().ToArray(); 解决方案二: 长方形的矩阵有上

rails应用ajax之一:使用纯js方法

    考虑如下需求: 1. 用户输入一个用户名,当焦点跳出文本框时,检查该用户名是否有效 2. 动态更新检查的结果     我们使用ajax的方式来实现这个简单的功能,首先建立view:check.html.erb: <%= javascript_include_tag "jquery" %> <%= javascript_include_tag "rails" %> <%= stylesheet_link_tag 'user' %&

rails应用ajax之三:进一步完善ajax动画特效果

    本猫已经对界面放低标准很久了,但是复习了ajax之后突然发现:哇!原来世界可以这么美,这么生动鲜活的!所以本篇主要讨论下如何用ajax在rails中做一些简单的动画效果.     其实最新版的的rails中使用的是coffeescript,它也是对js的高级封装,使其更贴近于ruby简洁灵动的语法.coffeescript暂时不校习鸟,以后补上吧!在rails旧版本中使用的js框架是prototype,其自带一个effects.js图像效果库.比如说我想在每次新插入user时将整ul元素