use*_*087 3 ruby model-view-controller ruby-on-rails
我是新来的红宝石和铁杆中的总菜鸟.在阅读了Michael Hartl的教程之后,我的脑袋正在旋转着octothorps,黄瓜和BDD.
我有使用Archaic Java和丑陋的jsp/servlet进行服务器端开发的经验.我想变得很酷并学习铁轨.
需要帮助理解基本的Rails概念,即使在阅读本书之后,它也不会点击:
在我们提出问题之前,首先要记住的是,所有变量,无论范围如何,都只对当前请求有效.您可以将配置值用于持久性,但全局将在请求结束时到期,与实例变量相同.
视图中可以使用控制器中设置的实例变量.模型只能访问已直接传递给Class或实例的变量.这意味着如果您有一个@first_name变量,在您的控制器或视图中,您将无法在模型中看到它.如果你想在你的模式中使用它,你就必须做一些这样MyModelName.new( :first_name => @first_name )或an_instance_of_my_modelname.some_method_i_have_added( @first_name ).
它们本身并不一定是方法,但它们几乎肯定会成为方法.您在模型中最典型地使用"变量"将是属性.模型的实例可以使用模型的属性,无论它是在视图,控制器,帮助器还是在任何地方.通过基本定义setter和getter方法,幕后(的属性属性的工作first_name将使法first_name()和first_name=()).甚至可以在模型中覆盖这些方法,以在插入或从数据库中删除之前操纵值.使用http://apidock.com/ruby/Module/attr_accessor,您可以在没有数据库的情况下实现类似的效果.类方法在范围上是相同的,但是在类上操作,而不是在特定实例上操作.
排序与1和2的答案相同...;)模型中设置的变量(但不是常量)必须通过控制器和视图中可用的方法公开.从没有明确提供的模型中看不到任何东西.否则,在视图,控制器,帮助器等之间,几乎任何带有@(或@@)前面的东西都是可见的,而任何变量都没有.
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |