写自己的magical one-liners for Javascript.
继续上一章的in_place_editor, 完成一个in_place_select_editor.
在rails里,InPlaceEditor是在 public/javascripts/control.js里面定义的,单击click会触发enterEditMode方法,然后由createForm()和createEditField()生成form.
目标:继承InPlaceEditor, 重写createEditField()完成select_editor.
创建一个新的js文件:public/javascripts/in_place_select_editor.js
Ajax.InPlaceSelectEditor = Class.create();
Object.extend(Object.extend(Ajax.InPlaceSelectEditor.prototype,
Ajax.InPlaceEditor.prototype), {
createEditField: function() {
var text = (this.options.LoadTextURL ? this.options.loadingText : this.getText()); // Updated
this.options.textarea = false;
var selectField = document.createElement("select");
selectField.name = "value";
selectField.innerHTML = this.options.selectOptionsHTML ||
"<option>" + text + "</option>";
$A(selectField.options).each(function(opt, index) {
if(text == opt.value) {
selectField.selectedIndex = index;
}
}
);
selectField.style.backgroundColor = this.options.highlightcolor;
this.editField = selectField;
if(this.options.loadTextURL) {
this.loadExternalText();
}
this.form.appendChild(this.editField);
}
});
把这个js文件加入到项目里
<%= javascript_include_tag "in_place_select_editor" %>
应用:
<span id="an_element_we_want_to_edit">Some Value</span>
<script type="text/javascript">
new Ajax.InPlaceSelectEditor(
'an_element_we_want_to_edit',
'/an/update/url',
{ selectOptionsHTML: '<option>Blah</option>' +
'<option>Some Value</option>' +
'<option>Some Other Value</option>' });
</script>
刷新页面,就可以了(??? 不过选项是hardcoded ???)
下面来制作这个helper, 而不在view里面出现javascript
MakingYourOwnJavaScriptHelper /app/helpers/application_helper.rb
def in_place_select_editor_field(object, method,
tag_options = {},
in_place_editor_options = {})
tag = ::ActionView::Helpers::InstanceTag.new(object, method, self)
tag_options = { :tag => "span",
:id => "#{object}_#{method}_#{tag.object.id}_in_place_editor",
:class => "in_place_editor_field"}.merge!(tag_options)
in_place_editor_options[:url] =
in_place_editor_options[:url] ||
url_for({ :action => "set_#{object}_#{method}", :id => tag.object.id })
tag.to_content_tag(tag_options.delete(:tag), tag_options) +
in_place_select_editor(tag_options[:id], in_place_editor_options)
end
上面会产生如下的js的代码
MakingYourOwnJavaScriptHelper /app/helpers/application_helper.rb
def in_place_select_editor(field_id, options = {})
function = "new Ajax.InPlaceSelectEditor("
function << "' #{field_id}' , "
function << "' #{url_for(options[:url])}' "
function << (' , ' + options_for_javascript(
{
'selectOptionsHTML' =>
%('#{escape_javascript(options[:select_options].gsub(/\n/, ""))}' )
}
)
) if options[:select_options]
function << ' )'
javascript_tag(function)
end
新的View是这个样子地。。。
MakingYourOwnJavaScriptHelper/app/views/contacts/show.rhtml
<p>
<b>Name:</b>
<%= in_place_editor_field :contact, :name %> <br />
<b>Country:</b>
<%= in_place_select_editor_field(
:contact,
:country,
{},
:select_options => country_options_for_select) %>
</p>
<br />
<%= link_to ' Back' , :action => ' list' %>
分享到:
相关推荐
**Making Your Own JavaScript Helper**:创建自定义的JavaScript助手函数,用于简化常见的前端任务,提高代码可读性和可维护性。 3. **Showing a Live Preview**:显示实时预览,通常用于富文本编辑器等场景,让...
Making Your Own JavaScript Helper**:教会读者如何创建自定义的 JavaScript 辅助函数来简化常见的 UI 任务。 - **3. Showing a Live Preview**:介绍了一个技术,使得用户可以在输入时实时预览结果,增强用户体验...
### Ruby on Rails Web Development Recipes #### 重要知识点概述 本篇文档主要介绍了一本名为《Ruby on Rails Web Development Recipes》的书籍,该书由 Chad Fowler 编写,并由 The Pragmatic Bookshelf 出版。...
《Rails Recipes with Source Code》是一本专注于Ruby on Rails框架实践技巧和源代码解析的书籍。Rails是基于Ruby语言的Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念和“开发人员的...
locstor, 用于 HTML5 localStorage的JavaScript helper 库 ## locstor.js 一个 localStorage helper 库支持所有现代浏览器和内容为什么是 locstor.js?API插件运行单元测试如何贡献问题/评论 ?让我们面对它,HTML5...
JavaScript Helper 是一个强大的工具,专为开发者设计,旨在简化JavaScript编码过程中的各种任务。这个工具集可以帮助程序员提高生产力,减少代码冗余,并确保代码的质量和可维护性。它包含了一系列实用的功能,涵盖...
《构建JavaScript框架》这本书深入浅出地介绍了如何创建自己的JavaScript框架。书中的内容涵盖了框架设计的各个方面,旨在帮助读者理解并实践JavaScript框架的构建过程。 首先,书中提到了"Framework Style",这...
JavaScript是一种广泛应用于Web开发的脚本语言,它主要在客户端运行,为网页添加交互性和动态功能。本资源包包含了三个CHM(Compiled HTML Help)格式的文件,它们分别是"JavaScript教程.chm"、"JavaScript Help_...
### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...
标题 "Rails相关电子书...此外,书中可能还涵盖了Rails的安全实践、性能优化以及与其他技术(如JavaScript库)的集成等内容。对于希望深入理解Rails框架或想要提升Web开发技能的开发者来说,这本书是一个宝贵的资源。
Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...
7. **Helper方法**:为了保持视图的简洁,Rails允许你在helper模块中定义辅助方法,然后在视图中调用。 8. **测试驱动开发(TDD)**:Rails鼓励使用测试来驱动开发,内置了Test::Unit和RSpec等测试框架。 9. **...
14. **AJAX和Unobtrusive JavaScript (UJS)**:Rails支持无侵入式JavaScript,通过数据属性和事件监听,使页面的部分内容能够异步更新,增强用户体验。 15. **ActiveJob**:Rails 4.2引入的ActiveJob是一个抽象层,...
在C#编程中,"Helper"类是一种常见的设计模式,用于封装特定功能或一组相关功能,使得代码更易于理解和维护。这些Helper类通常包含了对常用数据类型、文件操作、网络通信等的便捷处理方法。以下将详细介绍标题和描述...
gem 'foundation_rails_helper' , '~> 3.0' 然后执行: $ bundle 兼容性 仅完全支持Rails 4.1 / 4.2 / 5/6和Foundation 6 某些功能可能适用于Foundation 5及更早版本,但结果可能会有所不同,并且
javascript助手许多有用代码的汇编,在 JavaScript 中经常使用,还有更多。检查 IE: 我知道如何使用 IE(我们心爱的“Internet Explorer”)使用 a$$ 是一件非常痛苦的事情。 因此,这里有一个函数来确定 IE 版本...
Rails 2.0 API 文档是一个非常宝贵的资源,它为开发者提供了全面的指南,以便于在使用Ruby on Rails 2.0版本时更好地理解和利用其框架功能。Ruby on Rails(简称Rails)是一个开源的Web应用框架,它遵循MVC(模型-...
C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net core MongoDBHelper C# .net ...