2007-06-21
关于In Place Editing with RJS
关键字: RoR实践
最近在用RoR实现自己曾经做过的一个项目,发现事件过程中有很多乱七八糟的问题。
今天就花了一个上午的时间才搞清楚了这样一个功能。
我想让In Place Editing 调用完后台数据库后去render一个rjs。
一开始不知道默认In Place Editing 在Ajax调用完后,会使用返回的值去更新
原始<span>中的内容,
结果就发现原来显示值地方把握要render的rjs的javascript代码给打印出来了。
效果如下
后来看了In Place Editing with RJS一文才知道需要加上一个参数
:evalScripts=>true,就不会直接显示javascript脚本,而是直接运行javascript脚本了。
代码如下
今天就花了一个上午的时间才搞清楚了这样一个功能。
我想让In Place Editing 调用完后台数据库后去render一个rjs。
一开始不知道默认In Place Editing 在Ajax调用完后,会使用返回的值去更新
原始<span>中的内容,
结果就发现原来显示值地方把握要render的rjs的javascript代码给打印出来了。
效果如下
try { Element.show("roll_products_list"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.show(\"roll_products_list\");'); throw e }
后来看了In Place Editing with RJS一文才知道需要加上一个参数
:evalScripts=>true,就不会直接显示javascript脚本,而是直接运行javascript脚本了。
代码如下
def editable_content(options)
options[:content] = { :element => 'span' }.merge(options[:content])
options[:ajax] = {
:evalScripts=>true,:okText => "'Save'",
:cancelText => "'Cancel'",:submitOnBlur => true,
:okButton => false,:cancelLink => false,
:highlightcolor=>"''"}.merge(options[:ajax] || {})
script = Array.new
script << "new Ajax.InPlaceEditor("
script << " '#{options[:content][:options][:id]}',"
script << " '#{options[:url]}?_method=put',"
script << " {"
script << options[:ajax].map{ |key, value| "#{key.to_s}: #{value}" }.join(", ")
script << " }"
script << ")"
content_tag(
options[:content][:element],
h(options[:content][:text]),
options[:content][:options]
) + javascript_tag( script.join("\n") )
end
发表评论
- 浏览: 7967 次
- 性别:

- 来自: 福建福州

- 详细资料
搜索本博客
最新评论
-
struts2实践- 结合jquery ...
客户端和服务端配合验证的方案有吗?
-- by hotdog -
struts2实践- 结合jquery ...
只用js验证很不保险,服务端验证不可少
-- by kjj -
struts2实践- 结合jquery ...
jquery 比较耗资源~
-- by happy002 -
struts2实践-页面分页的 ...
能发一个吗 谢谢 dawnco@163.com
-- by adapt -
struts2实践- 结合jquery ...
long_jianxiu 写道不晓得有没有完整的代码,我现在弄的一头雾水的,不知 ...
-- by luckaway






评论排行榜