瞎扯淡 一个 Rails 新手的学习过程望朋友们多提建议

cqzhangkang · 2014年05月26日 · 最后由 dy1901 回复于 2014年05月28日 · 3924 次阅读

首先我介绍下我的情况,我重庆的,之前做了 5 年的 java 开发,去年经朋友介绍简单了了解了 ruby 和 rails。对于重庆来说,ruby 环境不好,所以后面还是继续干 java。这次重庆的一个 ruby 招聘重新提起了我对 ruby 的兴趣,这次也下定了决心一定要学好。

在这里我贴出我的一些学习细节,希望得到各位朋友的指导!

后面我和招聘方联系了下,他也坦言在重庆不容易找到熟手,愿意对我进行基本的考察,是不是有潜力的新手。他给我布置了一个练手项目,给了我一套价值 21 美元的后台模板,主要想看我的 ruby 编程风格和学习能力。

当时我的情况:我对 ruby 和 rails 都不是很熟,差不多就是零基础吧。面对这个任务,我虽做了 5 年开发,但是许多东西不懂的情况下,当时真有点不知道如何入手。那时候甚至不知道怎么把给的模板应用进来。只明白一些 ruby 简单语法,rails 的一些工作原理,MVC 基本流程,routes 规则这些。

当时我的想法是首先我得学习怎么在 rails 里把模板引进来,怎么嵌套页面,怎么布局,所以当时了解了 Assets Pipeline 的工作方法,然后通过几篇 rails 入门的博客了解到怎么让 controller 加 layout 渲染不同的模板,怎么把公共代码提取出来放到单独的页面,然后用 render 引入。这些了解之后我就把您发的模板页面提取过来,然后根据 header、left、main、footer 进行拆分 layout。这里遇到了 css 文件里图片路径、字体路径有问题,后面了解到用 asset-url 去替换,把样式文件改成模板文件。

布局完成后就是列表和表单。在这个过程中,我会了简单的 debugger 调试,然后又学习了一些 gem,比如分页的 will_paginate,表单验证(模板里用的 parsley)parsley-rails,以及昨天我学习的 simple_form。这里面遇到的最大问题是做查询的时候,like 查询写不来,总是报错。目前用 where("") 这样的原生 sql 做的。为什么看例子可以 Model.find(:all, :conditions => ['name LIKE ?', "%#{search}%"] 这样调用,但是我这样用就被解释成了使用 id 查询,生成的 sql,all 被理解成了 id,而 conditions 被理解成了 in 条件。

在做项目的过程中,我发现我对许多 tag 不了解,很多参数可以这样传也可以那样传,以及一些语句的常用的写法也不了解,然后就迫切想通过一本入门的书先了解这些用法。其实我做了多年开发也明白,要想快速的入门,多练习是必不可少的。我之所以有这样的想法主要还是我了解的基础太少。我认为多练习是应该的,但也应该适当先了解常用的许多基础。所以我的想法是,与其自己在项目中遇到一些菜鸟问题去费力解决,不如跟着一本有实践的书做练习。当时朋友给我推荐了《web 开发敏捷之道——应用 rails 进行敏捷 Web 开发》,他说这个比较入门,又从头到尾贯穿项目练习。总得来说,我是想有个指导的练习,这样少走一些弯路。

在这个过程中遇到了不少困惑,许多 gem 的用法很多,我不知道该怎么传参数。路径什么的有许多种写法,有用 xxx_path 的,有用 xxx_url 的。所以我在这里汇报下我的学习 gem 的路子,贴出来让您指导: 现在我要学习一个 gem,比如昨天我学习 simple_form。 1、首先去 gem 的官网,比如 simple_form 的 github 看看 readme 文件,一般有使用介绍。还有去http://railscasts.com/ 搜下有没有相关介绍视频 2、google 一下 simple_form 的相关 blog 使用介绍 3、在用的过程中遇到问题后 google 相关解决方案,比如 google "rails simple form radio_buttons" ,然后就会找到 simple_form radio_buttons 的相关网页,其中属问答社区 stackoverflow.com 的比较多 4、我找到一个网站可以了解一些 gem 的相关 class、method,http://rubydoc.info/ ,这样可以解决这样的问题:在用 simple_form 的过程中,我想给标签添加 html 属性,但是不知道怎么添加。 这里顺便说下,我目前了解的相关资源文件的网站,若您有更好的资源网站,希望能提供给我: 【1】http://api.rubyonrails.org/ Rails API 【2】http://ruby-doc.com/ Ruby API 【3】http://rubydoc.info/ github 上的一些关于 gem project 相关 class、method、files 【4】http://guides.rubyonrails.org/ Rails Guides

各位兄弟、同仁、大牛们,欢迎多拍砖指正,多提建议,把您们宝贵的资源和经验给我分享下,谢谢啦

《web 开发敏捷之道——应用 rails 进行敏捷 Web 开发》 :plus1:

为什么要学 simple_form?你不需要这些 Gems http://chloerei.com/2013/11/22/you-do-not-need-these-gems/

#1 楼 @Rei simple_form 是招聘方要求用的一个 gem,主要是看看我学习能力。谢谢建议,这篇文章我会好好看看,以后在工作中或许会用到

楼主的学习过程很赞。其实都是这么个过程,边学边用的学期速度非常快的 simple_form 这种文档详细到这种程度的 gem..不需要其它辅助了. 直接照着文档用就行了..遇到问题 google+stackoverflow 几乎都有答案. 我觉得靠直觉先用再起来再说,遇到问题再回头看他的方法什么的...

#3 楼 @flypiggys 可怕的是当你用 Simple_form 和 Bootstrap 3 的时候,痛不欲生,不过,现在解决了

#1 楼 @Rei 我曾经跟同事争论过 simple_form,因为这个东西在场景非常 simple 的时候还能用用,但是稍微复杂一点或者特定需求的时候就只能呵呵了,可能唯一的好处就是可以把表单的 i18n 统一起来。

很理解头大的感觉。path 和 url 有一点小区别,path 就是一个路径,url 会带上协议 http。一般用 path 会多些吧。 已经做过两个商业项目了,对那些 view 的写法还是半吊子,估计记住是不大可能了,只好用的时候查了。

#3 楼 @flypiggys 谢谢建议 多向你们学习呀 哈哈

#4 楼 @chunlea #5 楼 @lgn21st 那你们平时用什么 form 呢

#8 楼 @cqzhangkang Rails 自带的 form helpers 已经足够用了。

#6 楼 @chenge 我在学习中遇到的最大问题就是这些 tag,参数可以多样化,还容易混淆。

#10 楼 @cqzhangkang 可以看那个官方 guide,wiki 有个繁体版的。form 多写几次就熟悉了,不算太难。

form 可以直接用 html 来写的,可以试试看。

我接触到的项目不大,还是在用 simple_form

Model.find(:all, :conditions => ['name LIKE ?', "%#{search}%"]

这个是挺早前的语法了,楼主的那本《web 开发敏捷之道》是不是旧了?

Rails 每个主要版本升级都有很多变化。

User.where("name like ?", '%a%').to_sql
=> "SELECT \"users\".* FROM \"users\"  WHERE (name like '%a%')"

User.where.not("name like ?", '%a%').to_sql
=> "SELECT \"users\".* FROM \"users\"  WHERE (NOT (login like '%a%'))"

#15 楼 @Rei 😓 难怪啊 我弄那么久还以为是自己环境有问题。这个搜索功能我是参考的 RailsCasts。谢谢提醒呀,这一看不得了,原来这是 2007 年的视频了。http://railscasts.com/episodes/37-simple-search-form?autoplay=true

#16 楼 @liwei78 谢谢 😄 现在是不是只能通过 where 这一种写法进行 like 查询

同重庆人。在西安读书。。。表示很想回家工作啊。

我建议可以先试试接近 rails 风格的 play framework 然后再接触 rails,好处是先用熟悉的技术建立起 Rails 风格 MVC 的有关概念,然后再做技术的迁移

#20 楼 @jasl scala...这个巨坑进去就出不来了....

#5 楼 @lgn21st 其实 simple_form 就是针对大量 CRUD 的场景的,比如各种管理后台,企业管理系统等。这些用 Rails 默认的 form helper 配合很多 div 来写,还真是费时。

觉得先看这里足够了https://selfstore.io/~andor,还有就是 http://guides.rubyonrails.org/ 这里的文档读几遍,很多问题其实这里都能找到答案,其它资料可以先不看,资料多了你看不过来搞得很混乱。不着急,慢慢来,刚进来需要一个过程。

另外再补充一下,Rails_4_in_Action,可用于查漏补缺

#20 楼 @jasl 我昨天才去瞄了一下啊,java 的 Play framework.

#20 楼 @jasl play framework 是个 java 框架?我做了 5 年 java 以前没听说过真是惭愧。不过现在我学 rails 已经开始,也基本上熟悉了这种 MVC,就不来回折腾了。之后有空闲时间倒可以了解下

#21 楼 @saiga 哈哈 貌似你用过,还对你影响很大呀

#23 楼 @wikimo 多谢多谢,意见很中肯,现在感觉就有点混乱了,必须选出些重点学

#27 楼 @cqzhangkang 我觉得看完《web 开发敏捷之道》之前不用看其他资料(看也不知道那些方法怎么来的)。英文阅读没问题可以看原版最新版 http://pragprog.com/book/rails4/agile-web-development-with-rails-4 ,免去学习版本差异。不过工作场合用的不一定是最新版,也许还要逆着去看版本差异。

#24 楼 @ichord 对呀 java 的

#21 楼 @saiga play 还是可以用 java 写的吧,scala 我也不会 话说我接触 play 还是他 0.x 的时候

同样是新手,花了一个礼拜照着 Rails Tutorial 走了一遍,再加上 rails guide,stackoverflow 编程大法,感觉可以了解个大概。接下来再系统地梳理一遍?然后抛开书本再做一次?

@wikimo rails_4_in_action,有些地方的写法也比较老了。

@cqzhangkang java 系也可以看看jfinal,rails 的设计思路,比较干净,轻量级,源码很好读

scala 多棒啊。。。类型系统都能玩上瘾。。。

搭车问个问题 #9 楼 @lgn21st 即使是原生的 form helper 比如 collection_check_boxes 在 Bootstrap 3 下表现也不好,一般你们怎么解决的

#28 楼 @Rei 英文阅读有些吃力,后面空闲了些可以看,现在只能看中文资料快速入门。谢谢指导,我也感觉不能太杂了,跟着一本书就足够了,我这样的新手还是多练少看比较好

#31 楼 @yiming 你一周做了蛮多的事情,我这边主要还是因为时间太少,我现在白天还在做 java 工作。不知道你又没有这样的感觉,同样的例子做一次和多做几次收获还是很大的。第一次感觉就是依葫芦画瓢只了解个大概,第二次自己做完就能基本上熟悉了,第三次可能在细节上对有的东西有更好的认识。总的来说,我们这样的新手我觉得就要多练,我这些天做的东西不是很深,就是增删改查,表单,登录,博客这些,这里面做的事情类似的有很多重复的。一起学习,一起进步。

#35 楼 @bydmm 我也没有特别好的办法。

#37 楼 @cqzhangkang 时间是比较紧,白天写 iOS app,晚上写 Rails app。虽然之前有 web 开发基础,但重新再开始还是有点吃力。权当是业余爱好了。。。

@ichord 现在用你写的 at.js,在 ueditor 编辑器中用 at.js 无法出现自动补全,这个该怎么解决呢。

#40 楼 @linjiqin 我不喜欢百度。而且下载里没有 ruby 版本的。

对楼上关于 simple form 的讨论不能同意更多了。layout 稍微有点复杂的写起来只会比直接写 html 标签更累。做手机 view 定制的时候也麻烦。下拉标签用的是 jquery ui 里面的解决方案,style 是直接 js 生成的,手机上有时候布局会变得很奇怪,也很难修改。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号