edit_in_place确实是个不错的效果。但是对于 主流用户 来说,输入框还有优于它的。为什么呢?因为你EIP在那,很多人不知道是可以点击修改的。好吧。你说后面加个提示,行,然后发现用户华丽的去点后面的提示,发现不能改……
不知道本身这个插件有没有这个功能。没找到。知道的望告诉一下
那么,我们就把提示放进内容中吧。
我用的代码比较HARD,以后再更新,先能用。
打开jrails_in_place_macros_helper.rb 在plugins里,这个是helper的东西。
看到in_place_editor_field方法。也就是平时我们用在页面中的方法:
其中
tag.to_content_tag(tag_options.delete(:tag), tag_options) + in_place_editor(tag_options[:id], in_place_editor_options)
假设我们用的是模型pair, 字段name,在页面得到是:
<span class="in_place_editor_field" id="pair_name_1_in_place_editor">或许只是传说</span><script type="text/javascript">
//<![CDATA[
$('#pair_name_1_in_place_editor').editInPlace({update_value:'value', url:'/admin/lovetrees/set_pair_name/1'})
//]]>
</script>
其中span里的是tag.to_content_tag得到的。javascript是后面in_place_editor得到了。我们想把提示加入到内容中,就应该得到:
<span class="in_place_editor_field" id="pair_name_1_in_place_editor">或许只是传说(点击编辑)</span>
大概这样的效果。
也就是说应该是需要改动tag.to_content_tag部分。这个方法到底什么用的。我们看看API:
# File actionpack/lib/action_view/helpers/form_helper.rb, line 624
def to_content_tag(tag_name, options = {})
content_tag(tag_name, value(object), options)
end
哦。明白了。其中value(object)就是输出pair.name的值。那我们需要改动to_content_tag。但是我们不知道其他还有什么地方用到了。那就只改tag的这个方法吧。于是。我们在in_place_editor_field中这样改:
def in_place_editor_field(object, method, tag_options = {}, in_place_editor_options = {})
tag = ::ActionView::Helpers::InstanceTag.new(object, method, self)
#
def tag.to_content_tag(tag_name, str="", options = {})
content_tag(tag_name, value(object) + str, options)
end
#
#etc..
tag.to_content_tag(tag_options.delete(:tag), content_tag(:span, "(点击编辑)", :class => "notice"), tag_options) + in_place_editor(tag_options[;id], in_place_editor_options)
end
OK,重启一下,原来的“或许只是传说”变成了“或许只是传说(点击编辑)”并且你点这个提示,就会出现编辑效果了。
---
但是问题出来了!
当我们点击这个提示时,输入框里面的内容也多了这个提示内容!
追寻一下原因。这就不是rails的事儿了。是js的事儿了。
打开public/jquery_inplac.pack.js,不用去改plugins里面的js(以前博客修改eip中文提示提到过)
这个文件压缩过。就不细谈了。找到对应页面的输出内容:
'<input type="text" name="inplace_value" class="inplace.field" value="' + jQuery(this).text().trim().escape_html() + '"/>'
里面的jQuery(this).text().trim().escape_html()就是从原来的页面获取的内容。也就是说这一段代码得到了“或许只是传说(点击编辑)”而不是我们本来想要的“或许只是传说”。
好吧。既然是HARD CODE。那就直接替换掉。
'<input type="text" name="inplace_value" class="inplace.field" value="' + jQuery(this).text().trim().escape_html().escape_html().replace('(点击编辑)', '') + '"/>'
好了,当我们再看页面的时候,点击内容,提示就不会再出现在编辑框重了。对应的textarea也是同样的改发。
或许认为事情结束了。然后打开有select(EIP)的页面。发现当当点击编辑的时候,不能得到原始值了。比如,我们本来选择“心情”用EIP的SELECT,当点击编辑时,SELECT应该指到我选择的心情,但是现在给的是默认的“选择。。”
当然,还是修改public/jquery_inplac.pack.js。由于压缩过后用了很多变量来替代,select的代码很复杂。但是我们不难发现其中有句:
引用
var K=N==H?'selected="selected"': #etc
太明显不过了。再找找N H分别是什么。发现了代码:H=jQuery(this).html()也就是得到EIP之前的内容。
这就简单了。修改H? nono,这一改全乱了。我们只修改SELECT当中的,改成:
var K=N==jQuery(this).text().trim().escape_html().replace('(点击编辑)','')?'selected="selected"': #etc
好了,虽然HARD但是能用就OK了。
下次有时间改的通用些。
分享到:
- 2008-12-24 13:52
- 浏览 865
- 评论(0)
- 论坛回复 / 浏览 (0 / 1900)
- 查看更多
相关推荐
ALV EDIT_MASK字段的使用ALV EDIT_MASK字段的使用 ALV EDIT_MASK字段的使用
支持JQuery的Edit In Place Rails插件(rakuto),使用简便轻巧,与大家共享。 例子 ======= # 控制器 class BlogController in_place_edit_for :post, :title end # Customize the action that update the ...
color_edit 编辑框! 可以分色的! 可以做语法的!
图文详细教程教你如何用Cool_Edit_Pro_2.1录音,适合于配音软件的指导方案。
slickedit_16.0.2破解文件for Linux
Screenshot_20220312_023756_edit_82386531772294.jpg
InPlaceEditWithDatepicker 待办事项:撰写宝石说明 安装 将此行添加到您的应用程序的Gemfile中: gem 'in_place_edit_with_datepicker' ...// = require best_in_place // = require best_in_pl
Edit_Text.rar Edit 自绘基本知识
该代码提供了edit编辑框中带有图标显示的例子
IMG_20211117_211929_edit_1213744130186190.jpg
文本编辑+概述 Text Edit Plus 2021是一个交互式...这个应用程序为用户提供了黑暗模式,将帮助用户在夜间工作,以及一个高级的拼写检查程序,可以检测到所有的错误拼写在文档中。您也可以下载NCH开关声音文件转换器加。
迈达斯M32数码调音台的电脑模拟器 最新的版本 跟控制台的操作一样 可离线学习!
Madis M32离线操作学习软件V2.5版本,和M32实体控台操作界面一样,方便学习操作
behringer x32离线操作学习软件
Cool_Edit_Pro_2.1汉化破解版,专业音频编辑工具,已经在WIN7测试完成。真真汉化破解
亲测可用迈达斯MADIS32路数字调音台迈达斯MADIS32路数字调音台迈达斯MADIS32路数字调音台迈达斯MADIS32路数字调音台
亲测可用迈达斯MADIS32路数字调音台 迈达斯M32控制软件M32-Edi MAC版 迈达斯M32数码调音台的电脑模拟器 最新的版本 跟控制台的操作一样 可离线学习!
一个很好用的十六进制编辑控件,输出文件为OCX
MFC编程密码编辑控件设计代码MFC Programming design code the password edit control
XML编辑器 XMLEdit_Pro_XP85