Saya punya pertanyaan Rails.
Bagaimana cara mendapatkan nama tindakan pengontrol di dalam tindakan pengontrol?
Misalnya, alih-alih
def create
logger.info("create")
end
Saya ingin menulis sesuatu seperti
def create
logger.info(this_def_name)
end
Apa cara untuk mendapatkannya this_def_name
?
ruby-on-rails
function
Pavel K.
sumber
sumber
before_filter
dengan blok, lakukanbefore_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…action_name
bekerja di Rails 3.2.13, dancontroller.action_name
tidak.Dalam kasus spesifik tindakan Rails (sebagai lawan dari kasus umum mendapatkan nama metode saat ini) yang dapat Anda gunakan
params[:action]
Atau Anda mungkin ingin melihat ke kustomisasi format log Rails sehingga nama tindakan / metode dimasukkan oleh format daripada yang ada di pesan log Anda.
sumber
action_name == 'new'
(tidak diperbaiki) masih berfungsi untuk saya di Rails 3.2nama pengontrol:
return => 'pengguna'
nama tindakan:
return => 'tampilkan'
Indo:
return => '23'
sumber
Cuplikan ini berfungsi untuk Rails 3
akan dicetak
sumber
jawaban mikej sangat tepat dan membantu, tetapi hal yang saya juga ingin tahu adalah bagaimana mendapatkan nama metode saat ini di rel.
menemukan itu mungkin dengan self.current_method
mudah ditemukan di http://www.ruby-forum.com/topic/75258
sumber
Saya melakukan hal yang sama. Saya melakukannya di helper controller, kode saya adalah:
Metode ini akan mengembalikan nama contoller dan action saat ini. Semoga ini bisa membantu
sumber
controller_name
, yang merupakan metode yang mengembalikan nama pengontrol saat ini, dalam metode lain yang hanya memanggilcontroller_name
? Mengapa tidak menelepon sajacontroller_name
dan selesai saja?