`
ywencn
  • 浏览: 87023 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rails ajax rjs三个的表单提交即时展现应用

    博客分类:
  • Ruby
阅读更多

转载自: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>&nbsp; 发表于&nbsp; <%=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>&nbsp; 发表于&nbsp; <%=format_datetime(@shopscomment.updated_at)%>   </div>   
   <div class="huofa-lybg-wa"><strong style="#ffd">评论:</strong><%=@shopscomment.commentInfo%></div>
</div>   

-------------------------------------------------完

 

以上为所做的步骤和部分代码展示,css代码未贴。但足够用了。如果有什么疑问请跟帖问。谢谢。。。。以上纯粹是个人所学,所结,所用,有点菜,研究还未尽深入,希望有大鸟帮忙指导高深。

分享到:
评论

相关推荐

    rails ajax提交文件或图片

    在Rails中,`form_for`辅助方法可以帮助我们创建一个表单,但为了支持AJAX提交,我们需要将其与`remote: true`选项一起使用: ```html , url: uploads_path, html: { multipart: true }, remote: true do |f| %&gt; ...

    Ajax on Rails

    **Ajax on Rails** 是一本关于如何在Rails框架中利用Ajax技术来提升Web应用程序用户体验的书籍。Ajax(异步JavaScript和XML)技术允许开发者在不刷新整个页面的情况下更新部分网页内容,从而提供更流畅、响应更快的...

    Ajax on Rails (PPT)

    通过以上分析可以看出,“Ajax on Rails”PPT文档涵盖了从理论到实践的多个层面,不仅介绍了Prototype和Scriptaculous等JavaScript库的基本概念,还深入探讨了它们与Rails框架结合的具体应用方法。这对于希望学习和...

    RJS Templates for Rails

    - **OReilly.RJS.Templates.for.Rails.Jun.2006.chm**:这可能是一个关于RJS模板的电子书,详细介绍了如何在Rails项目中使用和优化RJS模板,包括示例和最佳实践。 - **file_id.diz**:这通常是一个文件说明文件,...

    rjs 技术

    阅读这本书可能会帮助深入理解rjs在Rails中的应用,以及如何利用rjs进行Ajax开发。 总的来说,rjs技术是Rails开发中的一个重要组成部分,特别是在处理动态内容和提高用户体验方面。尽管现代前端技术不断发展,但...

    ajax-rails

    4. **Ajax请求的生命周期**:在Rails中,一个Ajax请求通常涉及点击一个链接或提交表单,接着UJS驱动拦截事件,发起Ajax请求。服务器处理请求后,返回的JavaScript代码可以更新页面,无需整体刷新。 5. **模板和局部...

    跨越边界 Ajax on Rails

    1. **无刷新表单提交**:通过Ajax实现表单提交,无需跳转页面,提升用户体验。 2. **实时更新**:例如聊天室、实时计数器等,通过定时发送请求获取最新数据。 3. **动态加载内容**:分页、无限滚动等,用户滚动页面...

    ajax on rails

    ajax on rails压缩包,全英文

    基于Rails2.2.2的ajax

    标签 "源码" 和 "工具" 暗示了可能在压缩包文件 "RailsAjax" 中包含了相关的示例代码或者工具,用于辅助学习和理解如何在Rails 2.2.2中实现AJAX。这些代码可能包括完整的应用示例、控制器、视图、模型以及相关的...

    Ruby-SimpleForm轻松处理Rails表单

    在Ruby on Rails框架中,构建表单是一项常见的任务,而Simple Form gem就是为了简化这一过程而设计的。Simple Form是一款强大的表单构建器,它提供了一种简洁、直观的方式来创建复杂的表单,使得开发者能更专注于...

    应用Rails进行敏捷Web开发中文第三版

    《应用Rails进行敏捷Web开发》中文第三版是针对Ruby on Rails框架的一本详尽指南,主要聚焦于Rails 2.2.2版本。Ruby on Rails(简称Rails)是一款基于Ruby编程语言的开源Web应用程序框架,它遵循“Don't Repeat ...

    Ruby on Rails:Rails中的表单处理.docx

    Ruby on Rails:Rails中的表单处理.docx

    Beginning Google Maps Applications with Rails and Ajax

    《Beginning Google Maps Applications with Rails and Ajax》这本书为初学者提供了一条清晰的学习路径,从基础概念到实践案例,全面覆盖了如何使用Google Maps API、Rails以及Ajax技术创建高质量的地图应用所需的...

    使用Aptana+Rails开发Rails Web应用(中文)

    在app目录下,你可以找到views、controllers、models等子目录,它们分别对应视图、控制器和模型三个核心组件。 接下来,我们将探讨Rails的MVC(模型-视图-控制器)架构。模型负责数据操作,视图用于展示用户界面,...

    Rails-4-AJAX-Form:Rails 4 AJAX表单示例

    在这个表单中,`remote: true`参数告诉Rails使用AJAX来提交表单。接下来,我们需要在控制器中处理这个AJAX请求。以`PostsController`为例,我们可能有以下代码: ```ruby def create @post = Post.new(post_params...

    在Ruby on Rails中使用AJAX的教程

    在Rails中使用AJAX的第一步是创建一个Rails应用程序。例如,我们可以创建一个名为"Recipe"的应用,用来管理食谱。首先,需要创建一个数据库迁移文件,如清单1所示,定义食谱表的结构。接着,创建一个对应的Recipe...

Global site tag (gtag.js) - Google Analytics