我是新来的红宝石和铁杆中的总菜鸟。在阅读了迈克尔·哈特尔的教程之后,我的脑袋正在用octothorps,黄瓜和BDD旋转。
我在使用Archaic Java和丑陋的jsp / servlet进行服务器端开发方面有经验。我想变得很酷并学习铁轨。
需要帮助理解基本的Rails概念,即使在阅读本书之后,它也不会点击:
答案 0 :(得分:5)
在我们提出问题之前,首先要记住的是,所有变量(无论范围如何)仅对当前请求有效。您可以将配置值用于持久性,但全局将在请求结束时到期,与实例变量相同。
视图中可以使用控制器中设置的实例变量。模型只能访问已直接传递给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,您可以在没有数据库的情况下实现类似的效果。类方法在范围上是相同的,但是在类上操作,而不是在特定实例上操作。
Sorta与1和2的答案相同......;)模型中设置的变量(但不是常量)必须通过控制器和视图中可用的方法公开。从没有明确提供的模型中看不到任何东西。否则,在视图,控制器,帮助器等之间,几乎任何前面有@
(或@@
)的东西都是可见的,而任何变量都没有。
答案 1 :(得分:1)
当你从那里建立时,你需要健康剂量的Railscasts。
我认为Rails for Zombies会回答你的基本问题,但通常你会在控制器中(从模型中)加载你的实例变量,并在你的视图中访问它们以创建显示的页面。
HTH,祝你好运,欢迎来到酷酷的人群:)