iteye_1222 2008-06-30 22:57
浏览 188
已采纳

ROR rails ajax 数据的提交验证与添加问题

研究rails也有一段时间了,最近使用其开发一个简单的报名系统,其中遇到了一些技术上面的问题.
整个页面分成两个部分:
1.已有条目的显示(格式如下)
[quote]
题目详细信息----------------------------------删除(使用的AJAX技术动态页面删除)
.........................................................................
[/quote]

2.一个表单
[quote]
用于增加条目信息的

其中含有一个基本text字段(希望通过ajax技术验证)
和submit
[/quote]

提交过程是:
如果提交则在服务器端验证输入字段如果为空,则在text后面显示一条红字提示错误,如果提交正确则在上面的条目列表中增加一个条目.
我的思路是通过
[code="ruby"]
<%= form_remote_tag :url =>{:controller=>"enroll_info/edit_score",:action=>:add_score},
:complete => "eval(request.responseText)"
%>

信息:"12" -%>*提示错误

   


[/code]
在服务端根据输入信息进行判断然后回发一些javascript代码.
如果正确:
[code="ruby"]
new Insertion.Bottom('items',<%=render :partial=>'item' %>);
Element.hide('markerror');
[/code]
[code="ruby"]
#item:

:edit,:id=>item_a -%> "Element.remove('score#{item_a.id}') ;Element.hide('indicator')" , :loading => "Element.show('indicator')", :url=>{:action=>:destroy,:id=>item_a }, :confirm => '确定删除此条成绩?' -%>

[/code]

如果错误:
[code="ruby"]
new Element.show('markerror');
[/code]

现在的问题是在调用Insertion.Bottom('items',<%=render :partial=>'item' %>);时里面又有javascript代码,导致无法实现.

是否我的思路有问题,或者有一些转码方法?

  • 写回答

1条回答 默认 最新

  • wodeg_2_sdd 2008-07-01 09:46
    关注

    1.首先是增加条目的代码:
    [code="java"]<%= form_remote_tag :url =>{:controller=>"enroll_info/edit_score",:action=>:add_score}%> [/code]因为采用ajax的话,传回的JS会自己执行不需要eval

    2.另外在服务器端使用RJS:
    如果成功:
    page.insert_html :bottom,'items',:partial => 'item',:object => @item
    page['markerror'].hide();
    如果失败:
    page['markerror'].show();

    3.另外,RJS是可以直接写在控制器里的,如果像比较简单的rjs代码,就可以直写在控制器里,如果很复杂,就必须写在add_score.js.rjs文件里了

    像楼主的这个控制就可以这样写:

    respond_to do |format|
    format.js do
    if @item.save
    render :update do |page|
    page.insert_html :bottom,'items',:partial => 'item',:object => @item
    page['markerror'].hide()
    end
    else
    render :update do |page|
    page['markerror'].show();

      end
    

    end
    end
    end

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Windows 驱动 pcie问题
  • ¥15 用C语言完成一个复杂的游戏
  • ¥15 如何批量更改很多个文件夹里的文件名中包含文件夹名?
  • ¥50 MTK手机模拟HID鼠标出现卡顿
  • ¥20 求下下面这个数据结构代码
  • ¥20 前端 二进制文件流图片转化异常
  • ¥15 github上的这个C语言项目如何跑起来
  • ¥15 java 判断某个数 区间是否存在
  • ¥15 appium控制多个雷电模拟器问题
  • ¥15 C# iMobileDevice