`

Ruby On Rails开发技巧总结(不断更新,备忘)

阅读更多
Ruby On Rails开发时的技术还是很多很杂的,我现在把它们整理,列出来,方便自己,也方便大家。我的开发网站:[url][/url]

注:我在其中所列的,也有不是ROR专有的,但是在Rails开发中实用。

A:View
1。Helper number_to_currency(@book.price)格式化显示时间,$89.00,合适开发英文网站。

2。图片按钮提交表单,
<input type='image' src='/images/button2.gif' style='width:120px;height:30px;'/>
把它放在<form>内,和submit button的作用一样,另说明一下,这个网站上可以在线为我们生成自行设置的图片,很方便,http://www.buttonator.com/,我又看了一下这个网站,感觉它也很优秀,http://www.mycoolbutton.com

3。奇偶行变色:
<%=cycle('list-line-odd', 'list-line-even') %>


4。鼠标放上去变色,这个虽然是HTML方面的代码,但是在WEB开发中也用得比较多,所以记一下。
onmouseover="this.style.background='#FFFCDF';" onmouseout="this.style.background='#FFF';"


5。改进Flash消息的显示。Flash消息显示4秒后,淡出。
<% if flash[:warning] or flash[:notice] %>
  <div id="flash_message" <% if flash[:warning] %>class="warning"<% elsif flash[:notice] %>class='notice'<% end %> >
    <%= flash[:warning] || flash[:notice] %>
  </div>
  <script type="text/javascript">
    setTimeout("new Effect.Fade('flash_message');", 4000)
  </script>
<% end %>

别忘记了<%= javascript_include_tag :defaults %>,另外,对于Flash消息显示的css代码如下,
.notice{
	margin-top:5px;
	padding: 8px;
	border-top:2px solid #73E673;
	border-bottom:2px solid #73E673;
	background:#B6F2B6;
}
.warning{
	margin-top:5px;
	padding: 8px;
	border-top:2px solid #FFF280;
	border-bottom:2px solid #FFF280;
	background:#FFF9BF;
}


6。为了避免过长字符串撑开页面,经常需要调用截取过长字符串的方法,rails已经为我们提供了一个方法:
ActionView::Helpers::TextHelper#truncate(text, length = 30, truncate_string = "...") 

中英文混合字符串截取,见:http://www.iteye.com/topic/201531
#Quake Wang的做法
	def truncate_u(text, length = 30, truncate_string = "...")
		if r = Regexp.new("(?:(?:[^\xe0-\xef\x80-\xbf]{1,2})|(?:[\xe0-\xef][\x80-\xbf][\x80-\xbf])){#{length}}", true, 'n').match(text)
			r[0].length < text.length ? r[0] + truncate_string : r[0]
		else
			text
		end
	end
	
	
	#庄表伟的做法
	def truncate_u2(text, length = 30, truncate_string = "...")
  	l=0
  	char_array=text.unpack("U*")
  	char_array.each_with_index do |c,i|
    l = l+ (c<127 ? 0.5 : 1)
    	if l>=length
      	return char_array[0..i].pack("U*")+(i<char_array.length-1 ? truncate_string : "")
    	end
  	end
  	return text
	end


7。图形验证码的使用,首先要装上rmagick,将附件里的rb文件放在/app/models里,图片的引用src='xxx/code_image',则在xxx控制器的code_image方法定义如下
	def code_image
     	session[:noisy_image]=NoisyImage.new(4)
      session[:code] =session[:noisy_image].code
    	image = session[:noisy_image].code_image
    	send_data image, :type => 'image/jpeg', :disposition => 'inline'
  end

相信你看了以上的代码,也就知道怎么样验证用户输入的验证码是否一致了吧。

8。JavaEye的时间格式显示
# 将此方法放在/app/helpers/中
 
	  def status_time_ago_in_words(time)
    time = time_ago_in_words(time)
    case time
    when "less than a minute"
      "刚刚"
    when /minute/
    	time.gsub(/minute|minutes/,'分钟') + "前"
    when /hour/
    	##time.gsub(/about/,'').gsub(/hours/,'小时') + "前"
    	time.gsub(/about (\d+) (hour|hours)/, '\1小时') + "前后"
    when "1 day"
    	"昨天"
    when "2 days"
    	"前天"
    else
      time.gsub(/days/,'天') + "前"
    end
  end


9。格式化数字以千分位形式显示
ails的ViewHelper中有number_with_delimiter(number, delimiter=",", separator=".")方法,它的源代码位于# File vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb, line 125 
eg:number_with_delimiter(”162558855.3333233“)#162,558,855.3333233

10。
    *  number_to_currency
    * number_to_human_size
    * number_to_percentage
    * number_to_phone
    * number_with_delimiter
    * number_with_precision

看看吧,在NumberHelper中!是关于数方方面的Helper.

11。在线制作LOGO,有倒影效果和Beat,http://h-master.net/web2.0/index.php#home

12。将错误信息显示在自己想要的地方:
#写在helper里
def errors_for(object, attribute)
	if errors = object.errors.on(attribute)
		errors = [errors] unless errors.is_a?(Array)
		return "<ul class='blad-form'>" + errors.map {|e| "<li>" + e + "</li>"}.join + "</ul>"
	end
 end

在页面上使用
<%= errors_for @model, :description %>


13。
ActionController::InvalidAuthenticityToken解决办法
在表单中
<%= tag(:input, :type => "hidden", :name => 
request_forgery_protection_token.to_s, :value => 
form_authenticity_token) %> 


14。Rails中加密字符串
MD5加密:
require 'digest/md5'

puts Digest::MD5.hexdigest("Hello World!")


SHA1加密:
require 'digest/sha1'

puts Digest::SHA1.hexdigest("Hello World!")


————————————————————————
我把文章发到rails版论坛里,希望大家也发发自己的开发技巧,让大家都有所收获。
  • noisy_image.rar (697 Bytes)
  • 描述: 将这个rb文件放在/app/models里,然后在某一个controller中定义一个方法如下:[code="ruby"] def code_image session[:noisy_image]=NoisyImage.new(4) session[:code] =session[:noisy_image].code image = session[:noisy_image].code_image send_data image, :type => 'i
  • 下载次数: 45
  • 描述: 产生的图片验证码
  • 大小: 2 KB
分享到:
评论
3 楼 jimmie0902 2008-11-10  
很好,谢谢,分享的~~~~
2 楼 fnet 2008-11-10  
支持一下,有没有后续?
1 楼 71254468 2008-08-12  
望赐教刚才保存的问题,QQ71254468

相关推荐

    diary on Ruby on Rails-开源

    Diary ON Rails(donrails)是一个内容管理系统。 它可以使用各种东西。 主要用于日记,博客和备忘录。 Donrails的目标是建立内容管理框架和培训材料,以使用Ruby on Rails开发其他应用程序。

    rails-getting-started

    Radcircle 开发入门学习在线资源 - Ruby 和 Ruby on Rails - Ruby 和一些 Ruby on Rails - Ruby on Rails(必须有账号,但有 14 天免费试用) - 不错的 Rails 和 Ruby 备忘单 - 免费的 rails 截屏视频,非常有帮助,...

    v1_fmi_licenta

    如果您不熟悉该语言,并且如果您不了解 Ruby on Rails,请首先查看MyRubyOnRailsCheatSheet.pdf ,请先执行所有 Rails For Zombies 1 和 2 ( )。 大约需要 2 天时间,但至少您非常了解 RoR,并且可以开始工作。 在...

    Tech-memo

    总结来说,【Tech-memo】可能涵盖了Ruby的基本语法、面向对象特性、Ruby on Rails框架的使用以及元编程等核心概念。学习和理解这些知识点将有助于深入掌握Ruby编程,并能有效地利用它来解决实际问题。

    ProgrammingNotes:有关编程语言和Web开发框架的说明和备忘单

    - **Ruby on Rails**:Ruby语言的框架,强调DRY(Don't Repeat Yourself)原则和 Convention Over Configuration。 - **Angular**:由Google维护的JavaScript框架,用于构建复杂的单页应用。 - **React**:...

    kudpig:github的个人资料

    你好呀 :waving_hand: 我正在学习开发应用程序。学习内容在资源库中列出,因此可以用作备忘录。请参阅自述文件以获取概述,参考资料和源代码(部分摘录),以便您可以轻松地检查其内容。... Ruby / Ruby on Rails

    rspec-rails-examples:RSpec速查表和Rails应用程序:了解如何从模型代码库中专业测试Rails应用程序

    了解如何从模型代码库中专业测试Rails应用程序对于那些想知道如何使用RSpec测试Rails应用程序的开发人员来说,这是一个简短而全面的参考。 在这里,您将找到带有详细文档的深入示例,这些文档详细说明了如何使用...

    l-曲线matlab代码-Notes:日常学习笔记,什么都会有w

    l-曲线matlab代码 日常笔记,备忘 2020.09.08添加 有关SDRAM以及DDR的工作原理学习笔记,见 2020.09.09添加 ...Rails的web开发 2020.12.30添加 加密算法以及密码学 2021.01.08添加 AutoCAD笔记 2021.01.10

    well-grounded-rubyist:备注片段

    9. **Rails框架**:虽然《Well-Grounded Rubyist》可能更专注于语言本身,但Ruby最著名的应用是Ruby on Rails框架。了解MVC架构、路由、ActiveRecord等Rails概念,对于实际开发非常重要。 10. **最佳实践和风格指南...

    竞争关联:https:association-mes-aides-org.netlify.com

    Ruby是一种动态、面向对象的脚本语言,常用于Web开发,特别是与Ruby on Rails框架结合使用时,能快速构建功能丰富的应用程序。 根据压缩包子文件的文件名称列表"vie-associative-master",我们可以推测这可能是一个...

    Foundation5CheatSheet:Foundation-5 备忘单

    此外,它与许多流行的后端框架如 Ruby on Rails、WordPress、Drupal 等兼容,方便开发者集成到现有项目中。 总之,Foundation 5 作为一个强大而灵活的前端框架,为开发者提供了构建响应式网站的全面工具集。通过...

    memoru:这是Ripito的重写。 具有合作待办事项清单和提醒的工具

    1. **Web应用开发**:"memoru"可能是使用Web技术栈开发的,包括HTML、CSS、JavaScript,可能还涉及到前端框架如React、Vue或Angular,以及后端技术如Node.js、Django或Ruby on Rails。 2. **协作功能**:应用内可能...

Global site tag (gtag.js) - Google Analytics