রুব-অন-রেলস 3 এর রাউটিংয়ের একটি নেমস্পেস এবং সুযোগের মধ্যে পার্থক্য কী তা আমি বুঝতে পারি না।
কেউ দয়া করে ব্যাখ্যা করতে পারেন?
namespace "admin" do
resources :posts, :comments
end
scope :module => "admin" do
resources :posts, :comments
end
রুব-অন-রেলস 3 এর রাউটিংয়ের একটি নেমস্পেস এবং সুযোগের মধ্যে পার্থক্য কী তা আমি বুঝতে পারি না।
কেউ দয়া করে ব্যাখ্যা করতে পারেন?
namespace "admin" do
resources :posts, :comments
end
scope :module => "admin" do
resources :posts, :comments
end
উত্তর:
পার্থক্যটি উত্পন্ন পথে রয়েছে।
পথগুলি admin_posts_path
এবং admin_comments_path
নাম স্থানের জন্য, যখন সেগুলি কেবল posts_path
এবং comments_path
সুযোগের জন্য।
:name_prefix
সুযোগের অপশনটি পাস করে আপনি নামফলক হিসাবে একই ফলাফল পেতে পারেন ।
উদাহরণগুলি সর্বদা আমাকে সহায়তা করে, সুতরাং এখানে একটি উদাহরণ রয়েছে:
namespace :blog do
resources :contexts
end
আমাদের নীচের রুটগুলি দেবে:
blog_contexts GET /blog/contexts(.:format) {:action=>"index", :controller=>"blog/contexts"}
POST /blog/contexts(.:format) {:action=>"create", :controller=>"blog/contexts"}
new_blog_context GET /blog/contexts/new(.:format) {:action=>"new", :controller=>"blog/contexts"}
edit_blog_context GET /blog/contexts/:id/edit(.:format) {:action=>"edit", :controller=>"blog/contexts"}
blog_context GET /blog/contexts/:id(.:format) {:action=>"show", :controller=>"blog/contexts"}
PUT /blog/contexts/:id(.:format) {:action=>"update", :controller=>"blog/contexts"}
DELETE /blog/contexts/:id(.:format) {:action=>"destroy", :controller=>"blog/contexts"}
সুযোগ ব্যবহার করা হচ্ছে ...
scope :module => 'blog' do
resources :contexts
end
আমাদের দেবে:
contexts GET /contexts(.:format) {:action=>"index", :controller=>"blog/contexts"}
POST /contexts(.:format) {:action=>"create", :controller=>"blog/contexts"}
new_context GET /contexts/new(.:format) {:action=>"new", :controller=>"blog/contexts"}
edit_context GET /contexts/:id/edit(.:format) {:action=>"edit", :controller=>"blog/contexts"}
context GET /contexts/:id(.:format) {:action=>"show", :controller=>"blog/contexts"}
PUT /contexts/:id(.:format) {:action=>"update", :controller=>"blog/contexts"}
DELETE /contexts/:id(.:format) {:action=>"destroy", :controller=>"blog/contexts"}
এই বিষয়টিতে এখানে কিছু ভাল পড়া হচ্ছে: http://edgeguides.rubyonrails.org/routing.html#controller-namespaces- and-routing
থেকে পাগল নির্দেশিকা
"নেমস্পেসের সুযোগটি স্বয়ংক্রিয়ভাবে :as
পাশাপাশি :module
এবং :path
উপসর্গগুলি যুক্ত করবে।"
সুতরাং
namespace "admin" do
resources :contexts
end
হিসাবে একই
scope "/admin", as: "admin", module: "admin" do
resources :contexts
end
স্কোপ এবং নেমস্পেস উভয়ই প্রদত্ত ডিফল্ট বিকল্পগুলির জন্য কয়েকটি সেট রুট করছে।
ছাড়া সেখানে কোনো ডিফল্ট অপশন আছে যে সুযোগ , এবং নামস্থান
:path
, :as
, :module
, :shallow_path
এবং:shallow_prefix
অপশন নামস্থান নাম সব ডিফল্ট।
উপলব্ধ অপশন উভয়ের জন্য সুযোগ এবং নামস্থান যারা মিলা ম্যাচ ।
সুযোগটি কিছুটা জটিল, তবে আপনি যা করতে চান ঠিকঠাক করে দেওয়ার জন্য আরও বিকল্প সরবরাহ করে।
সুযোগটি তিনটি বিকল্পকে সমর্থন করে : মডিউল, পথ এবং হিসাবে । আপনি যদি এটির সমস্ত বিকল্পের সাথে সুযোগ দেখতে পান তবে এটি ঠিক নেমস্পেসের মতোই হবে।
অন্য কথায়, দ্বারা উত্পন্ন রুটগুলি
namespace :admin do
resources :posts
end
হিসাবে একই
scope module: 'admin', path: 'admin', as: 'admin' do
resources :posts
end
অন্য কথায়, আমরা বলতে পারি যে নামের জায়গার তুলনায় সুযোগের জন্য কোনও ডিফল্ট বিকল্প নেই । নাম স্থানটি ডিফল্টরূপে এই সমস্ত অপশন যুক্ত করে। সুতরাং সুযোগ ব্যবহার করে, আমরা প্রয়োজন অনুসারে রুটগুলি আরও সুর করতে পারি।
আপনি যদি স্কোপ এবং নেমস্পেসের ডিফল্ট আচরণের দিকে গভীরভাবে নজর রাখেন , আপনি যে স্কোপটি ডিফল্টরূপে কেবল তা সমর্থন করতে পারেন : পথ বিকল্প, যেখানে নেমস্পেস হিসাবে তিনটি বিকল্প মডিউল, পাথ এবং ডিফল্ট হিসাবে সমর্থন করে।
আরও তথ্যের জন্য, দয়া করে একটি ডক নেমস্পেস এবং রাউটিং পড়ুন ।