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

cqzhangkang · May 26, 2014 · Last by dy1901 replied at May 28, 2014 · 3916 hits

首先我介绍下我的情况,我重庆的,之前做了 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 生成的,手机上有时候布局会变得很奇怪,也很难修改。

You need to Sign in before reply, if you don't have an account, please Sign up first.