转载自:http://hi.baidu.com/lynsahuang/blog/item/b732ca50c8ea05888d543061.html
下面内容是ror 提交ajax表单 并使用rjs模板替换div层内容的多种知识的使用和总结,纯属个人研究用,同时希望给到来的同行带来帮助。以下为帖:
一、在所在的控制器上加action:comment
def comment
@shop = Shop.find(params[:id])
#发送信息
if request.post?
@shopscomment= Shopscomment.new(params[:shopscomment])
# @shopscomments = Shopscomment.paginate :page => params[:page]||1, :per_page => 3,:conditions=>['shop_id=?',@shop],:order=>"updated_at desc"
respond_to do |format|
if @shopscomment.save
flash[:notice_com] = "评论成功!"
format.js
else
flash[:notice_com] = "评论失败,请重新输入!"
end
end
end
end
二、接着是制作表单和展示评论的视图。先建立show.rhtml普通视图放置--局部模板(评论显示_comshow.rhtml和表单_comment.rhtml)
show.rhtml: 加色的三个元素很重要
<div id='comments_show' class="fl-conly">
<%=flash[:notice_com]%> <%#显示控制器的flash内容,提醒用户提交是否正确%>
</div>
<div><%= render :partial => 'comshow' %></div> <%#渲染局部模板评论显示_comshow.rhtml,可以不用渲染%>
<div class="huofa-ly-morea"><%=will_paginate @shopscomments %></div>
<div class="huofa-bda">
<div class="huofa-bd-aa">发表我的留言</div>
<div class="huofa-bd-ba">
<%=render :partial=>"comment"%> <%#渲染局部模板提交的表单_comshow.rhtml,可以不用渲染%>
</div>
</div>
局部模板:1、评论显示:_comshow.rhtml
<% for shopscomment in @shopscomments %> <div class="huofa-ly-a">
<div class="huofa-lybga">
<a href="/<%=shopscomment.user.login%>"><%=shopscomment.user.login%></a> 发表于 <%=format_datetime(shopscomment.updated_at)%>
<div class="huofa-lybg-wa"><strong style="#ffd">评论:</strong><%=shopscomment.commentInfo%></div>
</div>
<% end %>
2、提交表单:_comment.rhtml (关键在于form_remote_for 的那些参数和选项,这里望大牛赐教)
<%form_remote_for(:shopscomment,
:loading => "$('comment_spinner').show();",
:url =>{:controller => "shops",:action => "comment",:id =>@shop},
500 => "$$('div#comments_show div.errors')[0].innerHTML = request.responseText; return false;",
:complete => "$('comment_spinner').hide();",
:html => {:id => "signup-form"}) do |form| %>
<%= error_messages_for :shopscoment %>
<table cellpadding="2">
<tr><td><strong style="color:red;">*</strong> 消费感受</td><td><%= form.text_area :commentInfo,:rows=>6,:cols => 50,:class => "text required min-length-20 max-length-1000"%></td></tr>
<tr><td colspan="2" align="center">
<input name="提交" type="submit" value="提交留言" onclick='return validator.validate();'/>
<%= image_tag 'spinner.gif' , :style => 'display:none;', :id => 'comment_spinner'%>
</td></tr>
</table>
<% end %>
三、建立rjs模板comment.rjs,使用新建局部模板_commenttemp.rhtml替换show.rhtml的id为comments_show的divc层,如下:
<div id='comments_show' class="fl-conly">
<%=flash[:notice_com]%> <%#显示控制器的flash内容,提醒用户提交是否正确%> </div>
comment.rjs模板代码是:
page.insert_html position,id,*option of render (insert_html的参数选项设置,插入位置,div的id,替代模板)
page.insert_html :top, "comments_show",:partial=>"commenttemp"
page.visual_effect :highlight,'comments_show'
插入层模板_commenttemp.rhtml: (这里就是你想插入什么东西,你喜欢就行了,会替代id为cmoments_show的div层)
<div class="huofa-ly-a">
<div class="huofa-lybga">
<a href="/<%=@shopscomment.user.login%>"><%=@shopscomment.user.login%></a> 发表于 <%=format_datetime(@shopscomment.updated_at)%> </div>
<div class="huofa-lybg-wa"><strong style="#ffd">评论:</strong><%=@shopscomment.commentInfo%></div>
</div>
-------------------------------------------------完
以上为所做的步骤和部分代码展示,css代码未贴。但足够用了。如果有什么疑问请跟帖问。谢谢。。。。以上纯粹是个人所学,所结,所用,有点菜,研究还未尽深入,希望有大鸟帮忙指导高深。
分享到:
相关推荐
在Rails中,`form_for`辅助方法可以帮助我们创建一个表单,但为了支持AJAX提交,我们需要将其与`remote: true`选项一起使用: ```html , url: uploads_path, html: { multipart: true }, remote: true do |f| %> ...
**Ajax on Rails** 是一本关于如何在Rails框架中利用Ajax技术来提升Web应用程序用户体验的书籍。Ajax(异步JavaScript和XML)技术允许开发者在不刷新整个页面的情况下更新部分网页内容,从而提供更流畅、响应更快的...
通过以上分析可以看出,“Ajax on Rails”PPT文档涵盖了从理论到实践的多个层面,不仅介绍了Prototype和Scriptaculous等JavaScript库的基本概念,还深入探讨了它们与Rails框架结合的具体应用方法。这对于希望学习和...
- **OReilly.RJS.Templates.for.Rails.Jun.2006.chm**:这可能是一个关于RJS模板的电子书,详细介绍了如何在Rails项目中使用和优化RJS模板,包括示例和最佳实践。 - **file_id.diz**:这通常是一个文件说明文件,...
阅读这本书可能会帮助深入理解rjs在Rails中的应用,以及如何利用rjs进行Ajax开发。 总的来说,rjs技术是Rails开发中的一个重要组成部分,特别是在处理动态内容和提高用户体验方面。尽管现代前端技术不断发展,但...
4. **Ajax请求的生命周期**:在Rails中,一个Ajax请求通常涉及点击一个链接或提交表单,接着UJS驱动拦截事件,发起Ajax请求。服务器处理请求后,返回的JavaScript代码可以更新页面,无需整体刷新。 5. **模板和局部...
1. **无刷新表单提交**:通过Ajax实现表单提交,无需跳转页面,提升用户体验。 2. **实时更新**:例如聊天室、实时计数器等,通过定时发送请求获取最新数据。 3. **动态加载内容**:分页、无限滚动等,用户滚动页面...
ajax on rails压缩包,全英文
标签 "源码" 和 "工具" 暗示了可能在压缩包文件 "RailsAjax" 中包含了相关的示例代码或者工具,用于辅助学习和理解如何在Rails 2.2.2中实现AJAX。这些代码可能包括完整的应用示例、控制器、视图、模型以及相关的...
在Ruby on Rails框架中,构建表单是一项常见的任务,而Simple Form gem就是为了简化这一过程而设计的。Simple Form是一款强大的表单构建器,它提供了一种简洁、直观的方式来创建复杂的表单,使得开发者能更专注于...
《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...
Ruby on Rails:Rails中的表单处理.docx
《Beginning Google Maps Applications with Rails and Ajax》这本书为初学者提供了一条清晰的学习路径,从基础概念到实践案例,全面覆盖了如何使用Google Maps API、Rails以及Ajax技术创建高质量的地图应用所需的...
在app目录下,你可以找到views、controllers、models等子目录,它们分别对应视图、控制器和模型三个核心组件。 接下来,我们将探讨Rails的MVC(模型-视图-控制器)架构。模型负责数据操作,视图用于展示用户界面,...
在这个表单中,`remote: true`参数告诉Rails使用AJAX来提交表单。接下来,我们需要在控制器中处理这个AJAX请求。以`PostsController`为例,我们可能有以下代码: ```ruby def create @post = Post.new(post_params...
在Rails中使用AJAX的第一步是创建一个Rails应用程序。例如,我们可以创建一个名为"Recipe"的应用,用来管理食谱。首先,需要创建一个数据库迁移文件,如清单1所示,定义食谱表的结构。接着,创建一个对应的Recipe...