gpt4 book ai didi

ruby-on-rails - 对 Rails 一无所知......请揭开如何跨 Controller View 和模型使用变量的神秘面纱

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:32 25 4
gpt4 key购买 nike

我是 ruby​​ 新手,完全是 Rails 新手。阅读 Michael Hartl 的教程后,我的脑子里充满了八角鱼、 cucumber 和 BDD。

我有使用古老的 Java 和丑陋的 jsp/servlet 进行服务器端开发的经验。我想变得很酷并学习 Rails。

需要帮助理解基本的 Rails 概念,即使读完这本书,它也不会点击:

  1. 我以为我知道如何在模型、 View 和 Controller 中使用该死的实例变量,但是当我使用它们时,事情就不起作用了。我需要关于在哪里、何时以及如何使用它们的规则。我有点了解如何使用从 Controller 到 View 的实例变量。但是模型到 Controller ? - 无能为力。
  2. 模型中的方法,为什么它们需要是方法?我可以只创建变量并在我的 Controller 和 View 中使用它们吗?这部分是如何工作的。
  3. 嗯,有点像第一个问题……模型和 Controller 中的变量使用……??

最佳答案

在我们进入您的问题之前,首先要记住的是,所有变量,无论作用域如何,都只对当前请求有效。您可以使用配置值进行持久化,但全局变量将在请求结束时过期,与实例变量相同。

  1. 在 Controller 中设置的实例变量可用于 View 。模型只能访问直接传递给类或实例的变量。这意味着如果您在 Controller 或 View 中有一个 @first_name 变量,您将无法在模型中看到它。如果您想在模型中使用它,则必须执行类似 MyModelName.new( :first_name => @first_name )an_instance_of_my_modelname.some_method_i_have_added( @first_name ) 之类的操作.

  2. 它们本身不一定是方法,但它们几乎肯定最终会成为方法。您在模型中最典型的“变量”用法是属性。模型上的属性可用于模型的实例,无论它是否在 View 、 Controller 、助手或任何地方。属性通过在幕后基本上定义一个 setter 和一个 getter 方法来工作(first_name 的属性将使方法 first_name()first_name=())。这些方法甚至可以在模型中被重写,以在从数据库中插入或删除之前操作值。您可以在没有数据库的情况下使用 http://apidock.com/ruby/Module/attr_accessor 实现类似的效果。 .类方法在作用域上是相同的,但对类而不是特定实例进行操作。

  3. 与 1 和 2 的答案大致相同...;) 模型中设置的变量(但不是常量)必须通过 Controller 和 View 中可用的方法公开。从未明确提供的模型中看不到任何内容。否则,在 View 、 Controller 、助手等等之间,几乎任何前面带有 @(或 @@)的东西都是可见的,而没有的任何变量都是不是。

关于ruby-on-rails - 对 Rails 一无所知......请揭开如何跨 Controller View 和模型使用变量的神秘面纱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12851919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com