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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵