跟模板中JavaScript相关的helper方法定义文件有javascript_helper.rb/prototype_helper.rb/scriptaculous_helper.rb
其中javascript_helper与基本的JavaScript功能有关,prototype_helper与Ajax有关,而scriptaculous_helper与controls和visual effects有关
先看看javascript_helper.rb中定义的一些helper方法:
1,
link_to_function方法为a标签触发onclick事件提供helper方法,可以直接写JavaScript语句或者给出代码block
def link_to_function(name, *args, &block)
html_options = args.last.is_a?(Hash) ? args.pop : {}
function = args[0] || ''
html_options.symbolize_keys!
function = update_page(&block) if block_given?
content_tag(
"a", name,
html_options.merge({
:href => html_options[:href] || "#",
: onclick => (html_options[: onclick] ? "#{html_options[: onclick]}; " : "") + "#{function}; return false;"
})
)
end
例子:
link_to_function "Greeting", "alert('Hello world!')"
# <a onclick="alert('Hello world!'); return false;" href="#">Greeting</a>
link_to_function(image_tag("delete"), "if (confirm('Really?')) do_delete()")
# <a onclick="if (confirm('Really?')) do_delete(); return false;" href="#">
# <img src="/images/delete.png?" alt="Delete"/>
# </a>
link_to_function("Show me more", nil, :id => "more_link") do |page|
page[:details].visual_effect :toggle_blind
page[:more_link].replace_html "Show me less"
end
# <a href="#" id="more_link" onclick="try {
# $("details").visualEffect("toggle_blind");
# $("more_link").update("Show me less");
# }
# catch (e) {
# alert('RJS error:\n\n' + e.toString());
# alert('$(\"details\").visualEffect(\"toggle_blind\");
# \n$(\"more_link\").update(\"Show me less\");');
# throw e
# };
# return false;">Show me more</a>
2,
button_to_function方法为button触发onclick事件提供helper方法,可以直接写JavaScript语句或者给出代码block
def button_to_function(name, *args, &block)
html_options = args.last.is_a?(Hash) ? args.pop : {}
function = args[0] || ''
html_options.symbolize_keys!
function = update_page(&block) if block_given?
tag(:input, html_options.merge({
:type => "button", :value => name,
: onclick => (html_options[: onclick] ? "#{html_options[: onclick]}; " : "") + "#{function};"
}))
end
例子:
button_to_function "Greeting", "alert('Hello world!')"
button_to_function "Delete", "if (confirm('Really?')) do_delete()"
button_to_function "Details" do |page|
page[:details].visual_effect :toggle_slide
end
button_to_function "Details", :class => "details_button" do |page|
page[:details].visual_effect :toggle_slide
end
3,
javascript_tag方法返回一个JavaScript标签
def javascript_tag(content, html_options = {})
content_tag("script", javascript_cdata_section(content), html_options.merge(:type => "text/javascript"))
end
例子:
javascript_tag "alert('All is good')"
# <script type="text/javascript">
# //<![CDATA[
# alert('All is good')
# //]]>
# </script>
本质上都是使用content_tag或tag方法来生成html标签,然后加上一些html_options的修饰,非常简单,却又非常实用
分享到:
- 2007-07-02 18:33
- 浏览 2062
- 评论(0)
- 论坛回复 / 浏览 (0 / 2668)
- 查看更多
相关推荐
持续移动且不破坏事物 :factory: :building_construction: :construction: :construction_worker: 正在建设中-请稍后再回来!
:fire: 设计精美的管理面板(Nodejs、Laravel、Java Spring、Ruby On Rails、Django、Asp.net Core ...) :motor_scooter: :motor_scooter: :motor_scooter: :vertical_traffic_light: Vespa 不是 CMS 或博客平台,...
这个 gem 在rails_helper.js.coffee.erb.上的编译时间上嵌入了image_path 、 asset_path和路由表rails_helper.js.coffee.erb. RailsHelper有一些功能。 局限性 这个 gem 只能使用没有命名路由的段。 前任。 # ...
Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails 应用程序要快。 Rails::API 可以用来创建只提供API服务(API-Only)的 Rails ...
允许您使用为Rails应用程序的前端供电。 是将前端工具像Ruby一样进行编程,纯属喜悦! :smiling_face_with_heart-eyes: 或在运行的检查。 产品特点 :high_voltage: :light_bulb: 即时服务器启动 :high_voltage: ...
map_helper 在您的Rails应用程序或其他应用程序中实现Google Maps的简便方法。 ### 依赖关系:jQuery ## Load将map_helper放置在供应商文件夹中。 小贩 JavaScripts map_helper maphelper.coffee /app/assets/...
:dog_face: MiAudota :cat_face: 该应用程序显示可从用户最近的庇护所获取的动物,并允许将其应用到收养过程中,从而完成一份调查表,... Ruby on Rails API; PostgreSQL; Heroku。执照版权所有:copyright:2019, 。
Rails管理员状态机 主存储库已移至gitlab,所有新代码将在其中: 从rails_admin正确管理状态 允许从Rails Admin轻松地将state_machine事件发送到模型,包括对ActiveRecord \ Mongoid和自定义状态字段名称的支持以及...
《local_time_helper.cr:水晶语言实现的本地时间视图助手》 在软件开发中,特别是Web应用程序,我们经常需要在用户界面中展示当前用户所在时区的时间。这涉及到时区转换和本地化处理,以便为用户提供更加友好和...
是将前端工具作为Ruby进行编程,纯属喜悦! :smiling_face_with_heart-eyes: ... gem 'vite_rails' # vite_hanami for Hanami apps, vite_ruby for Rack apps 然后,运行: bundle install bundle exec vite install
SEO 和 Ruby On Rails 由的SEO代理制作的示例应用程序,用于将Rails设置为SEO友好。教程您可以在找到教程,或在。安装 git clone git@github....
安装将 spree_cloudzoom 添加到您的 Gemfile 中: gem 'spree_cloudzoom' 捆绑您的依赖项并运行安装生成器: bundlebundle exec rails g spree_cloudzoom:install测试请务必捆绑您的依赖项,然后为要运行的规范创建...
一个项目模板,用于为AWS Lambda快速创建一个新的Rails应用程序。 细节: Ruby 2.7运行时上的Railsv6.x。 集成JavaScript开发。 使用LibSass&Webpacker编译CSS / JS资产。 没有ActiveRecord。 阅读我们的指南...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
gem 'foundation_rails_helper' , '~> 3.0' 然后执行: $ bundle 兼容性 仅完全支持Rails 4.1 / 4.2 / 5/6和Foundation 6 某些功能可能适用于Foundation 5及更早版本,但结果可能会有所不同,并且
要使用Textile Editor Helper,您必须使用jQuery JavaScript库。 请遵循最佳做法,例如在页面底部添加JS文件(在关闭body标签之前)。 当前版本可能不支持早于4.1.4的Rails版本。 不支持Ruby 1.8。 如果这损坏了...
word分词器java源码 IMAX.im 功能 依附于 Douban API 创建电影信息库; 上传资源的时候自动解析 Ed2k, Torrent 的信息; 国内在线视频网站播放地址解析; Retina Display 支持; Apple TV API for @盒子大师 系统需求...
Rails的服务器定时响应头 带来Ruby on Rails服务器端性能指标 :chart_increasing: 通过server_timing gem访问Chrome的开发者工具(以及其他支持浏览器)。 生产安全:trade_mark:。 指标是从 gem收集的。 不需要帐户...
Ruby on Rails,简称Rails,是基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在使开发过程更加简洁高效。这个“ruby on rails 教程源码”很可能是为了辅助学习者深入理解Rails的...
对Rails的扩展,以允许使用绕道而行,返回简单的工作流浏览器导航。 特征 将您的“ link_to”行切换为“ detour_to”,并将您的控制器“ redirect_to”切换为“ back_or_redirect_to”,以允许用户从其来访者返回。 ...