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
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
kadardo
. - 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 yerinemethod_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şkenhtml
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.
Respond_with raylar: nasıl çalışır?...
Nasıl bir başlangıç ve bitiş bloğu olm...
JavaScript kilitler nasıl çalışır?...
CSS üçgenler nasıl çalışır?...
Veri bağlama Nasıl çalışır?AngularJS :...