Jawaban:
titleadalah variabel lokal. Mereka hanya ada dalam ruang lingkupnya (blok saat ini)
@title adalah variabel instan - dan tersedia untuk semua metode di dalam kelas.
Anda dapat membaca lebih lanjut di sini: http://strugglingwithruby.blogspot.dk/2010/03/variables.html
Di Ruby on Rails - mendeklarasikan variabel Anda di controller Anda sebagai variabel instan ( @title) membuatnya tersedia untuk Anda lihat.
Gunakan @titledi pengontrol Anda ketika Anda ingin variabel Anda tersedia di tampilan Anda.
Penjelasannya adalah bahwa itu @titleadalah variabel instan dan titlemerupakan variabel lokal dan rel membuat variabel instan dari pengontrol tersedia untuk dilihat. Ini terjadi karena kode templat (erb, haml, dll) dieksekusi dalam lingkup instance pengontrol saat ini.
Perbedaannya terletak pada ruang lingkup variabel. Versi @ tersedia untuk semua metode instance kelas.
Jawaban singkatnya, jika Anda berada di controller dan Anda perlu membuat variabel tersedia untuk tampilan kemudian gunakan @variable.
Untuk jawaban yang lebih lama coba ini: http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variables disebut variabel instan dalam ruby. Yang berarti Anda dapat mengakses variabel-variabel ini dalam METODE APA PUN di dalam kelas. [Melintasi semua metode di kelas]
Variabel tanpa @simbol disebut variabel lokal, yang berarti Anda dapat mengakses variabel lokal ini hanya dalam METODE YANG DEKLARKAN. Terbatas pada lingkup lokal.
Contoh Variabel Instans:
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
Dalam contoh di atas @cust_id, @cust_name, @cust_addrdiakses di metode lain dalam kelas. Tetapi hal yang sama tidak akan dapat diakses dengan variabel lokal.
Tutorial tentang Apa Lingkup Variabel? menyajikan beberapa detail dengan cukup baik, cukup lampirkan yang terkait di sini.
+------------------+----------------------+
| Name Begins With | Variable Scope |
+------------------+----------------------+
| $ | A global variable |
| @ | An instance variable |
| [a-z] or _ | A local variable |
| [A-Z] | A constant |
| @@ | A class variable |
+------------------+----------------------+
Variabel lokal hanya dapat diakses dari dalam blok inisialisasi itu. Variabel lokal juga dimulai dengan huruf kecil (az) atau garis bawah (_).
Dan variabel instan adalah instance dari selfdan dimulai dengan @variabel instance juga milik objek itu sendiri. Variabel Instance adalah variabel yang Anda lakukan metode misalnya .senddll
contoh:
@user = User.all
Ini @useradalah variabel instan
Dan variabel instance tidak diinisialisasi memiliki nilai Nil
@title& title?
@titleatautitle
Variabel @ adalah variabel instan, tanpa variabel lokal.
Baca lebih lanjut di http://ruby.about.com/od/variables/a/Instance-Variables.htm