SORU
29 ŞUBAT 2012, ÇARŞAMBA


Nasıl respond_to bloğu çalışır?raylar:

Getting Started with Rails yol gidiyorum ve bölüm 6.7 ile kafası karıştı. Bir iskele oluşturuluyor sonra aşağıdaki otomatik oluşturulan blok benim denetleyicisi içinde buluyorum:

def index
  @posts = Post.all

  respond_to do |format|
    format.html  # index.html.erb
    format.json  { render :json => @posts }
  end
end

Nasıl respond_to blok gerçekten çalışıyor mu anlamak istiyorum. Ne tür bir değişken biçimi mi? .html ve .formatı json nesnesi? ActionController::MimeResponds::ClassMethods::respond_to documentation bu soruya cevap vermez.

CEVAP
14 Kasım 2012, ÇARŞAMBA


Ruby yeni duyuyorum ve bu aynı kod saplandık. Kafayı buldum bu parçaları burada buldum cevapları biraz daha temel. Bu olabilir ya da birisi yardımcı olabilir.

  • respond_to ise üst sınıf bir yöntem ActionController.
  • bir blok, (tür bir temsilci ile benzerlik taşıyor. Belki çok değil, ama bir acemi için yeterince yakın. Blok blok için bir argüman olarak |format| end kadar do.
  • respond_to blok, format kavgaya müdahale ekibi geçen yürütür.

http://api.rubyonrails.org/classes/ActionController/Responder.html

  • Responder .html .json için bir yöntem içermiyor ama bu yöntemler neyse diyoruz! Bu bölümü bir döngü için beni attı.
  • Ruby özelliği method_missing çağırdı. Eğer var olmayan bir yöntem (json html gibi) çağırırsanız, Ruby yerine method_missing yöntemini çağırır.

http://ruby-metaprogramming.rubylearning.com/html/ruby_metaprogramming_2.html

  • Responder sınıfı* *17 kayıt olarak kullanır. 'Json', ile .isteklerine yanıt söylüyoruz dediğimiz zaman json için seri hale getirilirken json uzantısı. Bunu söylemek için hiçbir bağımsız değişken html aramak için ihtiyacımız var .varsayılan şekilde istekleri (sözleşmeler ve görünümleri kullanarak) html.

Bu JS-sözde kod kullanarak) gibi yazılabilir:

// get an instance to a responder from the base class
var responder = get_responder()

// register html to render in the default way
// (by way of the views and conventions)
responder.register('html')

// register json as well. the argument to .json is the second
// argument to method_missing ('json' is the first), which contains
// optional ways to configure the response. In this case, serialize as json.
responder.register('json', renderOptions)

Bu bölüm beni dışarı heck karıştı. Hala sezgisel olmayan bulabilirsiniz. Ruby bu teknik katıyor gibi görünüyor. Tüm sınıf (responder) yöntem uygulama olur. Kaldıraç method_missing, sırayla sınıfının bir örneğine ihtiyacımız var,-yöntemi, nesne pas geri pas için de çok minnettarız. 20 yıldır C gibi dillerde kodlanmış olan biri için, bu çok ters ve bana sezgisel olmayan. Kötü bir şey değil! Ama öyle şeyler ile bir sürü insan onların başının etrafında almak için gereken bir şey, ve ameliyattan sonra ne olabileceğini düşünüyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Ama Jenna

    Ama Jenna

    29 NİSAN 2011
  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010