新手问题 学习 Rails 的心态

hamxiaoz · 2013年02月28日 · 最后由 shlallen 回复于 2013年03月01日 · 2693 次阅读

本人 rails 新手一枚。在看 Ruby on Rails Guides. 发现很多东西我都是在依葫芦画瓢,感觉底层 rails 做了很多东西。比如 controller 里面,没写几行代码,怎么就把 post 给显示出来了。

def show
  @post = Post.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.xml  { render :xml => @post }
  end
end

我是做 C# C++ 桌面程序的,所以感觉 Rails 用起来有很大不同,很多东西,我都不知道去哪里找它背后的实现。

我在想,是不是学 rails 甚至是用 rails 的时候就要抱着这样的心态: 把 business 的逻辑给表达出来就可以了,其它的具体实现就靠 rails 来解决了。

Rails 砖家老师么,你们开始学习时是不是也有这样的疑惑?

先学 Ruby,再学 Rails,再学 Ruby,再学 Rails。 我是这么学的...

初学者不要太关注底层的逻辑,你不是已经显示出来了吗,那就够了,做得多了慢慢就明白怎么回事了,如果自己实在不能接受可以先去学习 sinatra 和 rack,这两个东西比较基础

@badboy 喜欢你这样的 overview! 谢谢。我回去接着悟。

感觉比较简单,不必要懂后面是怎么来的,先去按教程做。跑起来。中间的东西以后慢慢就会了解到。

web 这边基本上也就 http request response session cookie cache db,大多都是基于这些在运转的。

我觉得学习 Ruby 就像学太极拳:忘记其它语言就容易学了。

rails 是一个由一群专业人员为你设计的一套较好的 web 框架,它们根据自己的经验和知识打造了一款非常易用的框架(http://ruby-china.org/topics/7791)。所以,既然你要学习这套框架,必须按照它的习惯(或者说是约定来)来做,别的语言和框架只会限制你的思维,反而不利于学习 rails。ruby 也是一样。

个人见解,社区高人不要见笑。

我原来学 Rails 也有很多疑惑,主要是 Rails 里面很多都是 Convention Over Configuration 的,新手会觉得没写什么代码 Model, View, Controller 三层就莫名其妙的联系起来了。

我觉得对于约定这东西,

  1. 你可以不去学 Rails 怎么实现的,但你应该知道它是怎么工作的。
  2. Rails 为什么要这样约定。

比如 controller 的 action 怎么 render 的。你没必要去了解 Rails 内部怎么实现(比如怎么获取 action 名字,再去找相应的 view 模板),但你要知道不写 render 就会默认去找相应的 view,如果你有一些和约定不同的需求该怎么去做。比如你上面的例子,你可以去了解下

  1. 为什么用 respond_to,直接 render 有什么不好的
  2. 看看 respond_with,它能解决什么问题
  3. 如果上面都了解了,可以看看 Responder,但现在不需要去学(这个就属于了解它怎么工作的范畴了)

说实话我觉得 Rails 其实并不算易上手,这个也许跟其他人观点不同,你看看就行。新手学习 Rails 往往发现敲几行代码就实现了功能,但要自己做一个跟例子不同的东西就傻了。为什么?因为你只做了一半工作,剩下的 Rails 的约定帮你做了。而新手可能还不大理解为什么要这样约定。约定算是一种最佳实践,但最佳实践是要自己积累才明白为什么是最佳实践的……也许这么说挺绕,希望你能明白。

总之,了解一下 Rails 的约定是个必要过程,了解才能驾驭。不然约定反而会让你觉得束缚。

祝你玩 Rails 玩的愉快~

  • 多看(代码背后的代码)多写(demo)
  • 多几个为什么
  • 多几个 debug
  • 多几个还可以这样做呢....

#3 楼 @badboy 大神,太专业了

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