আমি কেন অন্য নিয়ামকের জন্য দর্শনগুলিতে একজন নিয়ামকের জন্য সহায়ক পদ্ধতি অ্যাক্সেস করতে পারি? হ্যাকিং / প্যাচাল পেলগুলি ব্যতীত এটিকে অক্ষম করার কোনও উপায় আছে কি?
উত্তর:
@ জর্জি শ্রেইবারের পদ্ধতিটি ৩.১ রেলগুলির মতো কাজ করে না; কোড উল্লেখযোগ্যভাবে পরিবর্তিত হয়েছে।
তবে, রেল ৩.১ এ এই বৈশিষ্ট্যটি অক্ষম করার আরও একটি ভাল উপায় আছে (এবং আশা করি পরে)। আপনার কনফিগারেশন / প্রয়োগ.আরবিতে এই লাইনটি যুক্ত করুন:
config.action_controller.include_all_helpers = false
এটি অ্যাপ্লিকেশন নিয়ন্ত্রণকারীকে সমস্ত সহায়ককে লোড করা থেকে বিরত করবে ।
(যে কেউ আগ্রহী তাদের জন্য, এখানে বৈশিষ্ট্যটি তৈরি করা হয়েছিল এমন টান অনুরোধ এখানে রয়েছে ))
উত্তরটি রিল সংস্করণে নির্ভর করে।
পরিবর্তন include_all_helpers
করার জন্য কনফিগ false
কোন পরিবেশে যেখানে আপনি কনফিগারেশন প্রয়োগ করতে চান না। আপনি যদি কনফিগারেশনটি সমস্ত পরিবেশে প্রয়োগ করতে চান তবে এটি পরিবর্তন করুন application.rb
।
config.action_controller.include_all_helpers = false
মিথ্যা হলে এটি অন্তর্ভুক্তি এড়িয়ে যাবে ।
নিম্নলিখিত লাইনটি মুছুন ApplicationController
helper :all
এইভাবে প্রতিটি নিয়ামক নিজস্ব সাহায্যকারী লোড করবে।
include HelperName
আপনি আপনার অ্যাপ্লিকেশনহেল্পারের শীর্ষে যুক্ত করতে পারেন ।
3 রেলগুলিতে, actioncontroller/base.rb
(224 লাইনের চারপাশে):
def self.inherited(klass)
super
klass.helper :all if klass.superclass == ActionController::Base
end
সুতরাং হ্যাঁ, আপনি যদি নিজের ক্লাসটি থেকে নেন তবে ActionController::Base
সমস্ত সহায়ককে অন্তর্ভুক্ত করা হবে।
এটি দেখতে , আপনার নিয়ামকের কোডের শুরুতে কল করুন clear_helpers
( AbstractClass::Helpers
; এতে অন্তর্ভুক্ত ActionController::Base
)। ক্লিয়ার_হেলপারদের জন্য সোর্স কোড মন্তব্য:
# Clears up all existing helpers in this class, only keeping the helper
# with the same name as this class.
যেমন:
class ApplicationController < ActionController::Base
clear_helpers
...
end
clear_helpers
(কর্মক্ষমতা) ক্ষতি ইতিমধ্যে হয়ে গেছে যেহেতু সমস্ত সাহায্যকারী লোড হয়েছে। আপনি সত্যই config.action_controller.include_all_helpers = false
(উপরের @ ক্রেইগ ওয়াকারের বিবরণ হিসাবে) ব্যবহার করতে চান , কারণ এটি সহায়তাকারীদের প্রথম স্থানে লোড হতে বাধা দেয়, ফলে আপনাকে কিছু কার্যকারিতা অর্জন করতে পারে (সম্ভবত সবচেয়ে উল্লেখযোগ্যভাবে উন্নয়ন মোডে)। actioncontroller/base.rb
স্নিপেট অন্তর্ভুক্ত করার জন্য ধন্যবাদ ; কোডটি দেখতে এবং কিছু রহস্য সরিয়ে ফেলা সর্বদা দুর্দান্ত।
clear_helpers
রেল 3.0 এর জন্য এখনও কার্যকর - config.action_controller.include_all_helpers = false
এটি কেবল 3.1 এবং এর বেশি রেল।
প্রকৃতপক্ষে রেল 2 এ , অ্যাকশনকন্ট্রোলার :: বেসের ডিফল্ট কার্যকারিতাটি ছিল সমস্ত সহায়ককে অন্তর্ভুক্ত করা।
চ্যান্সেট 6222 তারিখে 02/24/07 20:33:47 (3 বছর আগে) দ্বারা dhh : এটিকে একটি ডিফল্ট অনুমান করুন যে আপনি সব সময় সাহায্যকারী চান, (হ্যাঁ, হ্যাঁ)
পরিবর্তন:
class ApplicationController < ActionController::Base
helper :all # include all helpers, all the time
end
রেল 3 বিটা 1 এর হিসাবে, এটি চ্যাঞ্জেলোগ-এ উল্লিখিত হিসাবে আর নেই: