4 টি চিত্র-পাথ, চিত্র-url এবং সম্পদ-url আর এসএসএসএস ফাইলগুলিতে আর কাজ করে না


101

4 কি আমরা image-urlরেল 4 এ অন্যদের বাদ দিয়ে অন্য কিছু ব্যবহার করার কথা বলছি? তারা বিভিন্ন মূল্যবোধ ফেরত দেয় যা বোধগম্য হয় না। যদি আমি আছে logo.pngমধ্যে /app/assets/images/logo.pngএবং আমি নিম্নোক্ত কাজ, এই আমি কি পেতে হল:

image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")

অবশ্যই এগুলির কোনও কাজই নয় কারণ তাদের অন্তত /assetsসামনে প্রয়োজন need

আপডেট : আসলে, আমি কেবল লক্ষ্য করেছি, আমি কীভাবে রেল 4 এ চিত্রগুলি অ্যাক্সেস করব? আমি একটি চিত্র আছে/app/assets/images/logo.png। তবে আমি যদি নিম্নলিখিত URL গুলিতে যে কোনও একটিতে যাই, আমি এখনও আমার চিত্রটি দেখতে পাচ্ছি না:

http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png

আপডেট 2 : আমি কেবলমাত্র আমার সামনে আনতে পারছিlogo.pngতা হল/app/assets/stylesheetsডিরেক্টরিতেস্থানান্তরিত করেএবং তারপরে টানা:

http://localhost:3000/assets/logo.png

এটি ব্যবহার করে দেখুন:asset_path("logo.png", image)
মার্সেলো দে পোলি

@ দেপা - যা কেবল "/logo.png" তে রূপান্তরিত হয়েছে, যা আমার চিত্র তুলে ধরে না।
এ।

4
আপনি কি সেই .cssফাইলটিকে কোনও ফাইলের ভিতরে বা কোনও .css.scssফাইলে ব্যবহার করছেন?
মার্সেলো দে পোলি

@ ডিপা - কোনও সাহায্যকারী ব্যবহার করছেন না। আমি মনে করি এটা সম্পদের একটি বড় সমস্যা শুধু ফোল্ডারের আমার ইমেজ জন্য কাজ করছে না
এ।

4
@ দেপা - ওহ আমি দেখতে চাই আপনি কি জিজ্ঞাসা করছেন। এটি একটি .css.scssফাইলের মধ্যে
এ।

উত্তর:


115

আমি নিজেই এই সমস্যা ছিল। 3 টি পয়েন্ট যা আশাবাদী সাহায্য করবে:

  • আপনি যদি আপনার app/assets/imagesডিরেক্টরিতে চিত্রগুলি রাখেন , তবে আপনাকে কোনও প্রিফিক্স না দিয়ে সরাসরি চিত্রটি কল করতে সক্ষম হওয়া উচিত। অর্থাত্image_url('logo.png')
  • আপনি কোথায় সম্পদ ব্যবহার করবেন তার উপর নির্ভর করে পদ্ধতির উপর নির্ভর করবে। আপনি যদি এটি background-image:সম্পত্তি হিসাবে ব্যবহার করে থাকেন তবে আপনার কোডের লাইনটি হওয়া উচিত background-image: image-url('logo.png')। এটি কম এবং স্যাস স্টাইলশিট উভয়ের জন্যই কাজ করে। আপনি যদি ভিউটিতে এটি ইনলাইন ব্যবহার করে থাকেন তবে image_tagআপনার চিত্রটি আউটপুট দেওয়ার জন্য আপনাকে রেলগুলিতে বিল্ট ইন হেল্পার ব্যবহার করতে হবে । আবারও কোনও উপসর্গ নেই<%= image_tag 'logo.png' %>
  • সবশেষে, আপনি যদি নিজের সম্পদ প্রাক্কলিং করে থাকেন, আপনার সম্পদ rake assets:precompileউত্পাদন করতে চালিত করুন বা rake assets:precompile RAILS_ENV=productionউত্পাদনের জন্য, অন্যথায়, পৃষ্ঠাটি লোড করার সময় আপনার উত্পাদন পরিবেশে আঙুলের ছাপযুক্ত সম্পদ থাকবে না।

3 পয়েন্টের সেই কমান্ডগুলির জন্য আপনার bundle execযদি বান্ডলার চালাচ্ছেন তবে সেগুলি সহ আপনার উপসর্গের প্রয়োজন হবে ।


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

4
এখন আপনি এইভাবে উত্তর লিখবেন। প্রতিটি দৃশ্য। "হোয়াট আইফস" এর পূর্বাভাস দেওয়া, কোনও looseিলে .ালা শেষ হয় না। "লড়াই" দেখেছেন এমন কারও একটি চিহ্ন (সমস্যার মধ্য দিয়ে সত্যই কাজ করেছেন)।
আহ্নবিজক্যাড

আমাকে বেশ কয়েকবার RAILS_ENV = উত্পাদন হারিয়েছে।
ষাট

63

আপনার প্রথম সূত্রটি,, image_url('logo.png')সঠিক। যদি চিত্রটি পাওয়া যায়, তবে এটি পথটি উত্পন্ন করবে /assets/logo.png(প্লাস উত্পাদনে একটি হ্যাশ)। যাইহোক, যদি রেইলগুলি আপনার নামকৃত চিত্রটি না খুঁজে পায় তবে তা আবার পড়ে যাবে /images/logo.png

পরের প্রশ্নটি হল: কেন রেলগুলি আপনার চিত্রটি খুঁজে পাচ্ছে না? আপনি যদি এটিকে অ্যাপ্লিকেশন / সম্পদ / চিত্র / লোগো.পং তে রেখে দেন তবে আপনার কাছে গিয়ে এটি অ্যাক্সেস করতে সক্ষম হওয়া উচিত http://localhost:3000/assets/logo.png

যদি এটি কাজ করে তবে আপনার সিএসএস আপডেট হচ্ছে না, আপনাকে ক্যাশে সাফ করার দরকার হতে পারে। tmp/cache/assetsআপনার প্রকল্প ডিরেক্টরি থেকে মুছুন এবং সার্ভারটি পুনরায় চালু করুন (ওয়েব্রিক, ইত্যাদি)।

যদি এটি ব্যর্থ হয়, আপনি কেবল এটি ব্যবহার করেও চেষ্টা করতে পারেন যা background-image: url(logo.png);আপনার সিএসএসকে একই আপেক্ষিক পথ (যা ক্ষেত্রে / সম্পদগুলি ক্ষেত্রে) ফাইলগুলি সন্ধান করবে।


4
কেবল এদিকে ঝাঁপিয়ে পড়ার জন্য, আমাকে একক উদ্ধৃতিগুলির পরিবর্তে চিত্রের পথে ডাবল উদ্ধৃতি ব্যবহার করে কামড় দেওয়া হয়েছিল। আপনি অনেক বেশি সিএসএস / এসএসএস ফাইলগুলিতে সম্পদ সহায়কদের সাথে একক উদ্ধৃতি ব্যবহার করেন।
d_ethier

আমি "অনির্ধারিত স্থানীয় পরিবর্তনশীল বা পদ্ধতি` ইমেজ ' "পাচ্ছি
মুহাম্মাদ ওমর

আপনি কি শব্দের আগে শব্দের আগে দুর্ঘটনাক্রমে একটি জায়গা রেখেছেন?
নিক আরবান

tmp / ক্যাশে / সম্পদ আমার জন্য কাজ করে !.
শীতল_এফপি

10

আমি সবেমাত্র জানতে পেরেছি, asset_urlসাহায্যকারী ব্যবহার করে আপনি সেই সমস্যাটি সমাধান করেন।

asset_url("backgrounds/pattern.png", image)

আমি undefined local variable or method 'image'ত্রুটি পেয়েছি ।
পেঙ্গুইন

রেলপথে কিছু বদলে যেতে পারে, এই উত্তরটি পুরান! আপনি চেষ্টা করতে পারেনasset_path("<your_path>", type: :image)
বামটি

8

আমার অনুরূপ সমস্যা ছিল, ইনলাইন সিএসএস সহ একটি পটভূমি চিত্র যুক্ত করার চেষ্টা করছি। যেভাবে সম্পদ সিঙ্কটি কাজ করে তার কারণে চিত্রগুলির ফোল্ডার নির্দিষ্ট করার দরকার নেই।

এটি আমার পক্ষে কাজ করেছে:

background-image: url('/assets/image.jpg');

ধন্যবাদ, আমি করছিলাম assets/img.jpgবা ../assets/img.jpgযা সম্ভবত কোনও ডিরেক্টরিতে কাজ করে না। /assets/img.jpgকরে টিওয়াই
এলিওটএম

5

রেলস 4.0.0 image-urlআপনার সিএসএস ফাইলের সাথে একই ডিরেক্টরি কাঠামোতে সংজ্ঞায়িত চিত্রটি দেখবে ।

উদাহরণস্বরূপ, যদি আপনার সিএসএস হয় assets/stylesheets/main.css.scss, image-url('logo.png')হয়ে যায় url(/assets/logo.png)

আপনি যদি আপনার সিএসএস ফাইল সরান assets/stylesheets/cpanel/main.css.scss, image-url('logo.png')হয়ে যায় /assets/cpanel/logo.png

আপনি যদি সম্পদ / চিত্রের অধীনে চিত্রটি সরাসরি ব্যবহার করতে চান তবে আপনি ব্যবহার করতে পারেন asset-url('logo.png')


5

স্টাইলশিটগুলির জন্য: ইউআরএল (সম্পদ_পথ ('image.jpg'))


4
মধ্যে মূল পার্থক্য কি url(asset_path('image.jpg'), url('image.jpg')এবং image-url('image.jpg')? আমি কাজ করছি পাগল 5.0.0.1 এবং url()এ কাজ করে জরিমানা SCSS ফাইল এবং মধ্যে html.erb ফাইল আমি ব্যবহার asset_path()তাই আমি যেতে সঠিক উপায় জানতে চাই। আগাম ধন্যবাদ.
alexventuraio

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