Yanıtlar:
Raylar 2.X :@controller.action_name
3.1.x Raylar : controller.action_name
,action_name
Raylar 4.X :action_name
before_filter
bir blok ile kullanmak istiyorsanız yapın before_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…
action_name
Rails 3.2.13'te çalışıyor ve controller.action_name
çalışmıyor.
Belirli bir Rails eylemi durumunda (geçerli yöntem adını almanın genel durumunun aksine) kullanabilirsiniz params[:action]
Alternatif olarak, eylem / yöntem adının günlük iletinizde değil biçime dahil edilmesi için Rails günlük biçimini özelleştirmeye bakmak isteyebilirsiniz.
action_name == 'new'
(ön düzeltilmemiş) hala benim için Rails 3.2
Bu snippet Rails 3 için çalışıyor
class ReportsController < ApplicationController
def summary
logger.debug self.class.to_s + "." + self.action_name
end
end
yazdıracak
. . .
ReportsController.summary
. . .
mikej'ın cevabı çok hassas ve yararlıydı, ama aynı zamanda bilmek istediğim şey, raylarda mevcut yöntem adını nasıl alacağımdı.
self.current_method ile mümkün olduğunu öğrendi
http://www.ruby-forum.com/topic/75258 adresinde kolayca bulunabilir
Ben de aynısını yaptım. Yardımcı denetleyicide yaptım, kodum:
def get_controller_name
controller_name
end
def get_action_name
action_name
end
Bu yöntemler geçerli denetleyiciyi ve eylem adını döndürür. Umarım yardımcı olur
controller_name
Geçerli denetleyicinin adını döndüren bir yöntem olan, yalnızca çağıran başka bir yöntemde neden sarma controller_name
? Neden sadece onu arayıp bitirmeyesiniz ki controller_name
?