রেল ৩.১ এবং চিত্রের সম্পদ


156

আমি অ্যাডমিন নামক ফোল্ডারের মধ্যে আমার সমস্ত অ্যাডমিন থিমের জন্য সম্পদ ফোল্ডারে রেখেছি। তারপরে আমি এর সাথে লিংক রেখেছি স্বাভাবিকের মতো।

# Ruby    
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');

অবগতির জন্য। আমি পরীক্ষার জন্য আমি এখনও আমার সম্পদ সংকলন না করে এখনও সম্পদ_পথ ট্যাগটি ব্যবহার করছি না।

ঠিক আছে যতক্ষণ না আমি একটি চিত্র আপডেট করার সিদ্ধান্ত নিয়েছি all আমি কয়েকটি রঙ প্রতিস্থাপন করেছি তবে পুনরায় লোডের সময় নতুন স্টাইলযুক্ত চিত্রটি প্রদর্শিত হচ্ছে না। আমি যদি ব্রাউজারে চিত্রটি সরাসরি দেখি তবে এটি এখনও পুরানো চিত্রটি দেখায়। আরও একধাপ এগিয়ে আমি অ্যাডমিন ইমেজ ফোল্ডারটি ধ্বংস করে দিয়েছি। তবে এটি কিছু ভাঙ্গেনি যা সমস্ত চিত্র এখনও প্রদর্শিত হচ্ছে। এবং হ্যাঁ আমি আমার ক্যাশে সাফ করে দিয়েছি এবং একাধিক ব্রাউজারে চেষ্টা করেছি।

কোনও ধরণের চিত্রের ক্যাশে চলছে? পৃষ্ঠাগুলি পরিবেশন করতে পাউ ব্যবহার করে এটি কেবল স্থানীয় বিকাশ।

এমনকি পুরো চিত্রগুলির ফোল্ডারটি ধ্বংস করেও চিত্রগুলি এখনও পরিবেশন করা হচ্ছে।

আমি কিছু অনুপস্থিত করছি?


2
সম্পদ পাইপলাইন ব্যবহার করে 3.1 এর ক্ষেত্রে এটি ঘটেনি। আপনি কমান্ড রেক সম্পদ ব্যবহার করবেন: প্রাকম্পাইল যা এই ফাইলগুলিকে সংকুচিত করবে এবং তাদের পাবলিক ফাইলে নিয়ে যাবে
লি

2
তাদের জনসাধারণের ফোল্ডারে কাজ করা ভাল কাজ করেছে, সম্পদ ফোল্ডারটি থেকে তারা বেশ ভালই কাজ করেছে served ৩.১-তে আরও ডক্সের জন্য অপেক্ষা করতে হতে পারে।
লি

3
আমি আপনার হতাশা বুঝতে পারি। স্পষ্টতই প্রকাশিত প্রার্থীরা খুব ভাল নথিভুক্ত হন না।
tybro0103

1
এগুলিকে সম্পদে রেখে দিন, কেবল কোনও ফোল্ডারের পথ অন্তর্ভুক্ত করবেন না। আমার উত্তর নীচে দেখুন।
অ্যান্ড্রু

উত্তর:


226

৩.১-এ আপনি পথের 'চিত্রগুলি' অংশ থেকে মুক্তি পাবেন। সুতরাং যে চিত্রটি বাস করে /assets/images/example.pngতা এই ইউআরএল থেকে প্রাপ্ত অনুরোধে আসলে অ্যাক্সেসযোগ্য হবে -/assets/example.png

যেহেতু assets/imagesফোল্ডারটি একটি নতুন 3.1 অ্যাপ্লিকেশন সহ উত্পন্ন হয়েছে, এটি সম্ভবত আপনি অনুসরণ করতে চান এমন কনভেনশন। আমি মনে করি image_tagএটিই কোথায় এটি সন্ধান করবে তবে আমি এখনও এটি পরীক্ষা করি নি।

এছাড়াও, র‌্যালসনফের মূল বক্তব্য চলাকালীন, আমি ডি 2 এইচ এর কথা স্মরণ করি যা এর মধ্যে বেশি public folderহওয়া উচিত নয়, বেশিরভাগ ক্ষেত্রে কেবল ত্রুটি পৃষ্ঠা এবং একটি ফেভিকন।


হ্যাঁ আমি এই বরাদ্দের সাথে খেলেছি এবং এটিকে আরও সহজ করার জন্য তাদের কিছু উপায় আছে। হ্যাঁ সেগুলি আমার সম্পদ ফোল্ডারে রাখার কাজ করে তবে আপনি সম্পদ ট্যাগটি ব্যবহার করতে পারেন। সুতরাং আমি আরও কি তথ্য আসে তা দেখার জন্য অপেক্ষা করছি।
লি

1
ধন্যবাদ, আমাকেও অনেক সাহায্য করেছে। অন্যান্য ধরণের ওয়েব ডেভলপমেন্ট ফ্রেমওয়ার্ক থেকে আসা রেলগুলি শিখার চেষ্টা করার জন্য এই ছেলেটি আমাকে পাগল করছে এমন ধরণের জিনিস।
jn29098

6
এবং যদি দুটি ভিন্ন ফোল্ডারে একই ফাইলের নাম থাকে তবে কী হবে?
হ্যাডি এলসাহার

6
এটি ডিএইচ 2 হওয়া উচিত নয়?
টিয়াগো ফ্র্যাঙ্কো

1
ইতিমধ্যে কেন তাদের কিছু পরিবর্তন করতে হবে তা নিশ্চিত নয়।
টেস্টিবাউনারিজ

98

আপনি থেকে আপনার CSS ফাইলের এক্সটেনশন পরিবর্তন করতে চাইবেন .css.scssকরার .css.scss.erbকি:

background-image:url(<%=asset_path "admin/logo.png"%>);

পরিবর্তনগুলি দেখতে আপনার "হার্ড রিফ্রেশ" করার দরকার হতে পারে। ওএসএক্স ব্রাউজারগুলিতে সিএমডি + শিফট + আর।

উত্পাদন, নিশ্চিত করুন

rm -rf public/assets    
bundle exec rake assets:precompile RAILS_ENV=production

স্থাপনার উপর ঘটে।


44
সাসে এখানে নতুন চিত্র সহায়ক রয়েছে: চিত্র_আরল, চিত্র_পথ, ... আরও এখানে পাওয়া যাবে: এজগাইডস.আরউবায়োনরইলস.অর্গ / অ্যাসেট_পাইপলাইন। Html আর কোনও প্রিপ্রোসেসর হিসাবে আরবি ব্যবহার করার দরকার নেই
মার্টিন ওয়াওরশ

1
আমি স্যাস-রেল হেল্পারদের (ইমেজ_আরএল এবং ইমেজ-ইউআরএল) একটি CSS.scss ফাইলে চেষ্টা করেছি তবে এটি ব্যাখ্যা করা হয় বলে মনে হয় না। কোন সুত্র ?
ইনভাইনো

2
উত্পন্ন স্ক্যাস ফাইলগুলি ডিফল্টরূপে .css.scss নামকরণ করা হয়, বিছানার কোনও ছিটেফোঁড় এখনও ঘটেনি
অ্যাড্রিয়ান ম্যাকনিল

2
কোনও কারণে চিত্র-ইউআরএল আমার পক্ষে কাজ করে না, তবে সম্পদ-ইউআরএল ('মাইমাজেজ.পিএনজি', চিত্র) পুরোপুরি কার্যকর হয়েছিল worked (রেলস 3.1)
এলাদ

1
যদি 3.0 কেউ আপগ্রেড হতাশ হয়, আপনি শুধু থেকে আপনার স্টাইলশীট নাম পরিবর্তন করতে পারেন .cssথেকে .css.erb(পরে আপনি তাদের মধ্যে স্থানান্তরিত করে থাকেন app/assetsSass ছাড়া ERB প্রক্রিয়াকরণ জন্য।
উইলিয়াম Denniss

22

এটির মূল্যের জন্য, যখন আমি এটি করেছি তখন আমি দেখতে পেলাম যে কোনও ফোল্ডারকে CSS ফাইলের পথে অন্তর্ভুক্ত করা উচিত নয়। উদাহরণস্বরূপ যদি আমার কাছে থাকে app/assets/images/example.pngএবং আমি এটি আমার সিএসএস ফাইলে রাখি ...

div.example { background: url('example.png'); }

... তবে এটি কোনওভাবে যাদুতে কাজ করে। আমি চলমান এই মূর্ত আউট rake assets:precompileটাস্ক, যা শুধু আপনার সব ভার পাথ আউট সবকিছু স্বামী ও আবর্জনা ড্রয়ারের ফোল্ডারে ডাম্প: public/assets। এটা বিদ্রূপ, আইএমও ...

যে কোনও ক্ষেত্রে এর অর্থ আপনার কোনও ফোল্ডার পাথ লাগানোর দরকার নেই, আপনার সম্পদ ফোল্ডারে থাকা সমস্ত কিছুই এক বিশাল ডিরেক্টরিতে বাঁচবে। এই সিস্টেমটি ফাইল নাম বিরোধগুলি কীভাবে সমাধান করে তা অস্পষ্ট, আপনার এটি সম্পর্কে সাবধান হওয়া দরকার।

হতাশার মতো ধরণের পরিবর্তনের জন্য এখানে আরও ভাল ডক্স নেই।


3
যখন নামকরণের দ্বন্দ্ব রয়েছে, তখন কনফিগারেশন.সেটস.প্যাথস অ্যারে প্রদর্শিত প্রথম পন্থাটি সেই ফাইলটি বেছে নেওয়া হয়েছে। সহায়কটি ব্যবহার asset_path()করে এবং ডিরেক্টরিটি নির্দিষ্ট করে এড়ানো যায় ।
জোসেফ রাভেনওল্ফ

6
এই "ম্যাজিকালি কাজ করে" কারণ CSS ফাইল এবং চিত্রগুলি একই স্থানে রয়েছে in সিএসএস ফাইল রেফারেন্স সিএসএস ফাইলের অবস্থানের সাথে সম্পর্কিত।
বিল লিপার

সম্পদ পাইপলাইনটি একটি কালো বাক্সের কিছুটা হতে পারে, বিশেষত ফ্রন্ট-এন্ড বিকাশকারীদের জন্য, তবে এটি ফাইল পাথ এবং স্বয়ংক্রিয় ক্যাশে বুস্টিং সম্পর্কে চিন্তা না করার মতো অনেক দুর্দান্ত বৈশিষ্ট্য সরবরাহ করে।
মাইলস

16

রেল 4 এ আপনি এখন সিএসএস এবং স্যাস হেল্পার ইমেজ-ইউআরএল ব্যবহার করতে পারেন:

div.logo {background-image: image-url("logo.png");}

যদি আপনার পটভূমির চিত্রগুলি না দেখানো হয় তবে আপনি কীভাবে আপনার স্টাইলশীটে সেগুলি উল্লেখ করছেন তা বিবেচনা করে বিবেচনা করুন।


1
এটি সঠিক (4 রেলের জন্য)। এই উত্তরটি ভোট দিন!
আহ্নবিজক্যাড

রেলগুলি ইউআরএল কীওয়ার্ডের পাশাপাশি স্ট্রিংটি রেখে 'আপনাকে সহায়তা করে'। এর অর্থ আপনি পছন্দ মতো কাজ করতে পারেন। div.logo {background: image-url("logo.png") no-repeat center;}
অ্যান্টনি ডেনার

10

সিএসএসে বা কোনও আইএমজি ট্যাগে চিত্রগুলি উল্লেখ করার সময়, চিত্র-name.jpg ব্যবহার করুন

চিত্রটি আসলে ./assets/images/image-name.jpg এর অধীনে অবস্থিত while


আমার মনে হয় সিএসএসের ক্ষেত্রে এটি ভুল হয়েছে - আমি যখন background: url('sort_asc_disabled.png')এটি ব্যবহার করি তখন রেল ৩.১.০.সিআরসি 4 ব্যবহার করে ফাইল অ্যাপ্লিকেশন / সম্পদ / চিত্র / সাজানো_অ্যাস_ডিজিয়েড.পিএনজি ব্যবহার করে।
আশ্চর্যজনক

2

http://railscasts.com/episodes/279-understanding-the-asset-pipeline

এই রেলস্কাস্ট (সম্পদ পাইপলাইনে রেলস টিউটোরিয়াল ভিডিও) পাশাপাশি সম্পদ পাইপলাইনের পথগুলি ব্যাখ্যা করতেও অনেক সহায়তা করে। আমি এটি বেশ কার্যকর বলে মনে করেছি এবং বাস্তবে এটি কয়েকবার দেখেছি।

আমি যে সমাধানটি বেছে নিয়েছি তা হ'ল উপরের লি ম্যাকালির, তবে এই রেলকাস্ট আমাকে কেন এটি কাজ করে তা বুঝতে সহায়তা করেছে। আশা করি এটা সাহায্য করবে!


0

রেলগুলিতে সম্পদ পাইপলাইন এই সঠিক জিনিসটির জন্য একটি পদ্ধতি সরবরাহ করে।

আপনি কেবল নিজের সিএসএস বা এসএসএস ফাইলটিতে চিত্র_পথ ('চিত্রের ফাইলের নাম') যুক্ত করুন এবং রেলগুলি সমস্ত কিছুর যত্ন নেয় takes উদাহরণ স্বরূপ:

.logo{ background:url(image_path('admin/logo.png'));

(দ্রষ্টব্য যে এটি ঠিক একটি আরব দর্শনের মতোই কাজ করে এবং আপনি "/ সম্পদ" বা "/ সম্পদ / চিত্র" ব্যবহার করেন না)

রেলগুলি অন্যান্য সহায়ক পদ্ধতিও সরবরাহ করে এবং এখানে আরও একটি উত্তর রয়েছে: রেল ৩.১ ব্যবহার করার সময় আমি কীভাবে স্যাসে রেফারেন্স চিত্র ব্যবহার করব?


আমি জানি এই প্রশ্নটি কয়েক বছর পুরনো, তবে এটি অনুসন্ধান করার সময় এই প্রথম পৃষ্ঠাটি আমি গুগলে খুঁজে পেয়েছি, সুতরাং উত্তরটি নির্বাচন করা খুব দুর্দান্ত লাগবে যাতে অন্যরা সহজেই এটিকে উল্লেখ করতে পারে!
benrugg
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.