variáveis em Ruby sobre trilhos

Qual é a diferença entre @title e title? Uma vez que ambos podem ser nomes variáveis. Além disso, como eu decido que tipo de variável eu devo usar? Com @ ou não?

Author: mkobit, 2013-01-14

6 answers

title é uma variável local. Apenas existem no seu âmbito (bloco actual)

@title é uma variável de instância-e está disponível para todos os métodos dentro da classe.

Pode ler mais aqui: http://strugglingwithruby.blogspot.dk/2010/03/variables.html

Em Ruby on Rails-declarando as suas variáveis no seu controlador como variáveis de instância (@title) torna-as disponíveis para a sua vista.

 323
Author: Peter Rasmussen, 2017-11-01 10:58:38

Use @title nos seus controladores quando quiser que a sua variável esteja disponível nas suas vistas.

A explicação é que @title é uma variável de instância e title é uma variável local e rails faz variáveis de instância de controladores disponíveis para vistas. Isso acontece porque o código do modelo (erb, haml, etc) é executado dentro do escopo da instância do controlador atual.

 26
Author: joscas, 2013-01-14 13:52:49

A diferença está no âmbito da variável. A versão @está disponível para todos os métodos da instância de classe.

A resposta curta, Se você está no controlador e você precisa tornar a variável disponível para a vista, então use {[[0]}.

Para uma resposta muito mais longa, tente isto: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
 25
Author: GSP, 2013-01-14 13:33:59

@variables são chamadas variáveis de instância em ruby. O que significa que você pode acessar essas variáveis em qualquer método dentro da classe. [Em todos os métodos da classe]

As variáveis sem o símbolo @ são chamadas variáveis locais, o que significa que você pode aceder a estas variáveis locais apenas dentro desse método declarado. Limitado ao âmbito local.

Exemplo de variáveis de instância:
class Customer
  def initialize(id, name, addr)
    @cust_id = id
    @cust_name = name
    @cust_addr = addr
  end

  def display_details
    puts "Customer id #{@cust_id}"
    puts "Customer name #{@cust_name}"
    puts "Customer address #{@cust_addr}"
  end
end

No exemplo acima@cust_id, @cust_name, @cust_addr são acessados em outro método dentro do classe. Mas a mesma coisa não seria acessível com variáveis locais.

 13
Author: Prabhakar, 2015-05-02 12:06:25

Uma variável local só é acessível a partir do interior do bloco da sua inicialização. Também uma variável local começa com uma letra minúscula (A-z) ou sublinhado (_).

And instance variable is an instance of self and begins with a @ Also an instance variable belongs to the object itself. As variáveis de instância são aquelas em que você executa métodos por exemplo .send etc

Exemplo:

@user = User.all

O @user é a variável instância

E instância não inicializada as variáveis têm um valor de Nil

 4
Author: Joe Hilton, 2013-12-09 09:33:06

@ variáveis são variáveis de instância, sem variáveis locais.

Leia mais em http://ruby.about.com/od/variables/a/Instance-Variables.htm

 1
Author: John Beynon, 2013-01-14 13:33:09