जवाबों:
रेल 2.X :@controller.action_name
रेल 3.1.x : controller.action_name,action_name
रेल 4.X :action_name
before_filterकिसी ब्लॉक के साथ उपयोग करना चाहते हैं , तो करें before_filter { |controller| ... }। stackoverflow.com/questions/2669663/…
action_nameरेल 3.2.13 में काम करता है, और controller.action_nameनहीं करता है।
रेल कार्रवाई के विशिष्ट मामले में (वर्तमान विधि नाम प्राप्त करने के सामान्य मामले के विपरीत) आप उपयोग कर सकते हैं params[:action]
वैकल्पिक रूप से आप रेल लॉग फॉर्मेट को कस्टमाइज़ करना चाह सकते हैं, ताकि एक्शन / मेथड का नाम आपके लॉग मैसेज में होने के बजाय फॉर्मेट द्वारा शामिल हो।
action_name == 'new'(अविभाजित) अभी भी मेरे लिए रेल 3.2 में काम करता है
यह स्निपेट रेल 3 के लिए काम करता है
class ReportsController < ApplicationController
def summary
logger.debug self.class.to_s + "." + self.action_name
end
end
छप जाएगा
। । ।
रिपोर्टकंट्रोलर.सुमरी
। । ।
mikej का उत्तर बहुत सटीक और मददगार था, लेकिन जिस चीज को मैं जानना चाहता था, वह यह था कि रेल का वर्तमान तरीका कैसे प्राप्त किया जाए।
पता चला कि यह self.current_method के साथ संभव है
आसानी से http://www.ruby-forum.com/topic/75258 पर पाया गया
मैंने बस वही किया। मैंने इसे हेल्पर कंट्रोलर में किया, मेरा कोड है:
def get_controller_name
controller_name
end
def get_action_name
action_name
end
ये विधियाँ वर्तमान कॉनोलर और एक्शन नाम को लौटाएंगी। आशा करता हूँ की ये काम करेगा
controller_name, जो एक विधि है जो वर्तमान नियंत्रक का नाम देता है, एक अन्य विधि में जो सिर्फ कॉल करता है controller_name ? सिर्फ बुलावा क्यों नहींcontroller_name किया जाए और उसके साथ काम किया जाए?