打印

实现页面的局部刷新!

实现页面的局部刷新!

大概方向:用Ajax实现!
实际操作不知,谁能给个简单的例子.

TOP

敏捷rails开发那本书上就提供了最好最真实的例子,就在作那个点子书城的例子中
我想我就不去抄书给你啦,怕抄错~~~呵呵

TOP

我们用个最简单的例子:

<script type="text/javascript">
    new Ajax.Updater('divid','url')
</script>


这就可以更新divid部分了
更多的参与可以参考这里:
http://www.prototypejs.org/api/ajax/updater
http://wiki.script.aculo.us/scriptaculous/show/Ajax.Updater

那么到rails里面,就稍微简单一点,因为rails提供了一堆的_remote的helper方法,譬如我们常用的link_to_remote,remote_form_for
举个例子:

 <% remote_form_for :comment,
            :url=>comments_path,
            :method=>:post,
            :update=>'comment_div',
            :before =>%(Element.show('spinner')),
            :success => %(Element.hide('spinner')) do |f| %>

<%end%>


本帖最近评分记录
  • wscc111 R币 +3 辛苦了! 2008-3-17 15:27

TOP

3KS

我试试!!~~

TOP

抱错了 Ajax没有声明

我用的rails 1.1.0
自动生成的脚手架,
表: book 字段 : id , name . price
list.rhtml:

<div id="div1" >11111111111</div>
<script type="text/javascript">
    new Ajax.Updater('div1','../../books/new')
</script>
.......


是不是我的版本的问题?还是?
<% remote_form_for :comment,
    ;:url=>comments_path,             # comments_path = '../../books/new' ?   ,
    ;:update=>'comment_div',            #'comment_div' = 'div1'?
    ;:before =>%(Element.show('spinner')),     'spinner'是什么??
    ;:success => %(Element.hide('spinner')) do |f| %>
<%end%>

TOP

报什么错误。

spinner 这个是个显示正在加载的图片的ID,一般在web2.0的网站你都可以看到的,你可以忽略它。
url 该成你自己的url即可,简化下,譬如:

<% remote_form_for :book,
    :url=>'/books',
    :method=>:post,
    :method=>:get,
    :update=>'div1' do |f| %>
<p>
Title:<%=f.text_field :name%>
</p>

<p>
Price:<%=f.text_field :price%>
</p>

<p>
<%=submit_tag%>
</p>
<%end%>

这个是表单提交,如果你的是连接的话,可以使用 link_to_remote

<%=link_to_remote "Add Book",:url =>'/books/new',:update =>'div1'%>

[ 本帖最后由 martin 于 2008-3-17 14:09 编辑 ]

TOP

Discuz 论坛会自动将我的包含在code里面的代码“:”修改成 “;:” 我郁闷。

TOP

合乎.3KS 正确的方向

link_to_remote()的简单例子
http://www.sawin.cn/doc/SP/Ajax/blueski659.htm

TOP

这个也能刷!



<div id="divid" >11111111111</div>
<script type="text/javascript">
  function func1(){
    new Ajax.Updater('divid','../../book/new')
  }
</script>

<input type="button" value="btn1" id="btn1" onclick="func1();"/>
...


<%= javascript_include_tag "prototype" %>
<h1>Listing books</h1>
<div id="divid" >11111111111</div>
<script type="text/javascript">
  new Ajax.Updater('divid','../../mail_tos/new')
</script>

<% remote_form_for :book,
    :url=>'/books',
    :method=>:post,
    :method=>:get,
    :update=>'div1' do |f| %>
<p>
Title:<%=f.text_field :name%>
</p>
<p>
Price:<%=f.text_field :price%>
</p>
<p>
<%=submit_tag%>
</p>
<%end%>
画面一出来 div就被刷掉了,可以看到刷新的过程,<%=submit_tag%>生成的按钮Save changes ,点了没反映!
没控制好! 请帮我改进下

TOP

上面的[code]..[/code]可以实现刷新

改进下面的!谢谢

TOP

link刷新可以了,但是效果是不很好,

一个页面分2部分,第2部分是div  1,2部分紧密相连点连接后刷新div 1,2部分间隙距离为1个<br>

TOP

晕,习惯按ctrl +enter了

有什么办法把刷新后的画面布局调整和没刷新之前的样子!~

TOP

引用:
原帖由 martin 于 2008-3-17 14:06 发表
报什么错误。

spinner 这个是个显示正在加载的图片的ID,一般在web2.0的网站你都可以看到的,你可以忽略它。
url 该成你自己的url即可,简化下,譬如:

'/books',
    :method=>:post,
  ...
报的是 Ajax 这个变量没有定义!
<%= javascript_include_tag "prototype"%>
在list.rhtml 中加入上面这句解决了
radrails真不错!

TOP

2008-11-23 23:22 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61