Yanıtlar:
Raylar 2.X :@controller.action_name
3.1.x Raylar : controller.action_name,action_name
Raylar 4.X :action_name
before_filterbir blok ile kullanmak istiyorsanız yapın before_filter { |controller| ... }. stackoverflow.com/questions/2669663/…
action_nameRails 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_nameGeç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?