আপনার জেএস বা সিএসএস ফাইলগুলি সম্পদ পাইপলাইনের বাইরে লোড করা উচিত নয় কারণ আপনি গুরুত্বপূর্ণ বৈশিষ্ট্যগুলি হারিয়ে ফেলেন যা রেলগুলি দুর্দান্ত করে তোলে। এবং আপনার আর একটি রত্নের দরকার নেই। আমি যতটা সম্ভব রত্ন ব্যবহারে বিশ্বাস করি এবং রত্ন ব্যবহার করা এখানে প্রয়োজনীয় নয়।
আপনি যা চান তা "কন্ট্রোলার নির্দিষ্ট জাভাস্ক্রিপ্ট" হিসাবে পরিচিত ("নীচে অ্যাকশন নির্দিষ্ট জাভাস্ক্রিপ্ট অন্তর্ভুক্ত করা হয়েছে) এটি আপনাকে একটি নির্দিষ্ট কনট্রোলারের জন্য একটি নির্দিষ্ট জাভাস্ক্রিপ্ট ফাইল লোড করতে দেয়। আপনার জাভাস্ক্রিপ্টকে একটি ভিউয়ের সাথে সংযুক্ত করার চেষ্টা করা এক ধরণের .. পিছনে এবং এমভিসি ডিজাইন প্যাটার্নটি অনুসরণ করে না You আপনি এটিকে আপনার নিয়ন্ত্রণকারী বা আপনার কন্ট্রোলারগুলির অভ্যন্তরে ক্রিয়াগুলির সাথে যুক্ত করতে চান।
দুর্ভাগ্যক্রমে, যে কোনও কারণেই, রেল ডেভস সিদ্ধান্ত নিয়েছে যে ডিফল্টরূপে, প্রতিটি পৃষ্ঠা আপনার সম্পত্তি ডিরেক্টরিতে অবস্থিত প্রতিটি জেএস ফাইল লোড করবে। তারা কেন ডিফল্টরূপে "কন্ট্রোলার নির্দিষ্ট জাভাস্ক্রিপ্ট" সক্ষম করার পরিবর্তে এটি করার সিদ্ধান্ত নিয়েছে তা আমি কখনই জানতে পারি না। এটি অ্যাপ্লিকেশন.জেএস ফাইলের মাধ্যমে সম্পন্ন হয়, এতে নিম্নলিখিত কোডের লাইনটি ডিফল্টরূপে অন্তর্ভুক্ত থাকে:
//= require_tree .
এটি একটি নির্দেশিকা হিসাবে পরিচিত । সম্পদ / জাভাস্ক্রিপ্ট ডিরেক্টরিতে প্রতিটি জেএস ফাইল লোড করতে স্প্রোককেটগুলি এটি ব্যবহার করে। ডিফল্টরূপে, স্প্রোককেটগুলি স্বয়ংক্রিয়ভাবে অ্যাপ্লিকেশন.জে এবং লোড করে দেয়।
দ্রষ্টব্য: আপনি যখন স্ক্যাফোল্ড করে (আপনি যদি ভারা না করে থাকেন তবে এখন শুরু করার ভাল সময়), রেলগুলি স্বয়ংক্রিয়ভাবে আপনার জন্য একটি কফি ফাইল উত্পন্ন করে , সেই স্ক্যাফোোল্ডের নিয়ামকের জন্য। যদি আপনি এটি কোনও কফি ফাইলের পরিবর্তে মানক জেএস ফাইল তৈরি করতে চান তবে আপনার জেমফাইলে ডিফল্টরূপে সক্ষম কফি রত্নটি সরিয়ে ফেলুন এবং এর পরিবর্তে আপনার স্ক্যাফোল্ড জেএস ফাইল তৈরি করবে।
ঠিক আছে, সুতরাং "কন্ট্রোলার নির্দিষ্ট জাভাস্ক্রিপ্ট" সক্ষম করার প্রথম পদক্ষেপটি হ'ল আপনার অ্যাপ্লিকেশন.জেএস ফাইল থেকে প্রয়োজনীয়_ট্রি কোডটি সরিয়ে ফেলা, বা আপনার যদি এখনও বিশ্বব্যাপী জেএস ফাইলের প্রয়োজন হয় তবে এটি আপনার সম্পদ / জাভাস্ক্রিপ্ট ডিরেক্টরিতে একটি ফোল্ডারে পরিবর্তন করুন। অর্থাৎ,
//= require_tree ./global
পদক্ষেপ 2: আপনার কনফিগারেশন / আরম্ভকারী / সম্পদ.rb ফাইলটিতে যান এবং নিম্নলিখিতগুলি যুক্ত করুন:
%w( controllerone controllertwo controllerthree ).each do |controller|
Rails.application.config.assets.precompile += ["#{controller}.js", "#{controller}.css"]
end
আপনি যে কন্ট্রোলারের নাম সন্নিবেশ করান।
পদক্ষেপ 3: আপনার এপ্লিকেশন। Html.erb ফাইলটিতে জাভাস্ক্রিপ্ট_মিলন_ট্যাগটি প্রতিস্থাপন করুন (প্যারামগুলি নোট করুন:: নিয়ামক] অংশ:
<%= javascript_include_tag 'application', params[:controller], 'data-turbolinks-track': 'reload' %>
আপনার সার্ভার পুনরায় আরম্ভ করুন এবং ভায়োলা! আপনার স্ক্যাফোল্ডের সাহায্যে জেএস ফাইলটি তৈরি করা হয়েছিল কেবল তখনই লোড হবে যখন সেই নিয়ামককে ডাকা হয়।
আপনার নিয়ামক , আইই / নিবন্ধ / নতুন কোনও নির্দিষ্ট অ্যাকশনে একটি নির্দিষ্ট জেএস ফাইলটি লোড করা দরকার ? পরিবর্তে এটি করুন:
application.html.erb :
<%= javascript_include_tag "#{controller_name}/#{action_name}" if AppName::Application.assets.find_asset("#{controller_name}/#{action_name}") %>
কনফিগারেশন / আরম্ভকারী / সম্পদ.আরবি :
config.assets.precompile += %w(*/*)
তারপরে আপনার সম্পদ / জাভাস্ক্রিপ্টস ফোল্ডারে যেমন আপনি নিয়ন্ত্রণ করছেন তেমন নামের সাথে একটি নতুন ফোল্ডার যুক্ত করুন এবং আপনার ক্রিয়াকলাপের ভিতরে js ফাইলটি একই নামের সাথে রাখুন। এরপরে এটি সেই নির্দিষ্ট ক্রিয়ায় লোড হবে।