কীভাবে রেলগুলিতে আনন্দ এবং অসন্তুষ্টি যুক্ত করা যায়

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

নিয়ামক এবং মডেল তৈরি করুন

প্রথমে আপনাকে মডেল তৈরি করতে হবে:

রেলস জি মডেল পোস্টের মতো: রেফারেন্স ব্যবহারকারী: তথ্যসূত্র

তারপরে সারণীটি স্থানান্তর করুন:

রেলস ডিবি: মাইগ্রেশন করা

অবশেষে, নিয়ামক যুক্ত করুন:

রেলগুলি জি কন্ট্রোলার পছন্দ করে

কন্ট্রোলারে তৈরি পদ্ধতি যুক্ত করুন

ক্লাস লাইকসন্ট্রোলার
ডিএফ তৈরি করুন @ post.likes.create (ব্যবহারকারী_আইডি: কারেন্ট_ইউজার.আইডি) পুনঃনির্দেশ_পোস্ট_পথ (@ পোস্ট) শেষ
ব্যক্তিগত
Def সন্ধান_পোস্ট @ পোস্ট = পোস্ট.ফাইন্ড (প্যারামগুলি [: পোস্ট_আইডি]) শেষ
শেষ

অ্যাপ্লিকেশন / দর্শনগুলি / পোস্টে / show.html.erb এ কোডটি যুক্ত করুন:

<% = বাটন_তে 'লাইক', পোস্ট_লিক্স_পথ (@ পোস্ট), পদ্ধতি :: পোস্ট%>

রুটস.আরবিতে আপনি পোস্টগুলির সংস্থানটিতে মন্তব্য সংস্থানটি নীড় করে:

সংস্থানসমূহ: পোস্টগুলি সংস্থানসমূহ: শেষ পছন্দ করে

পোস্ট / ব্যবহারকারী এবং পছন্দগুলির মধ্যে একের মধ্যে একাধিক সম্পর্ক স্থাপন করুন। আপনি এটি এরকম করুন:

অ্যাপ্লিকেশন / মডেলগুলি / post.rb এবং অ্যাপ্লিকেশন / মডেলগুলি / user.rb এ নিম্নলিখিত লাইনটি যুক্ত করুন:

has_many: পছন্দ, নির্ভর :: ধ্বংস

প্রথম অংশটি পোস্ট / ব্যবহারকারী এবং তাদের পছন্দগুলির মধ্যে সম্পর্ক নির্দেশ করে। দ্বিতীয় অংশটি নিশ্চিত করে যে আপনি যখন কোনও পোস্ট / ব্যবহারকারী মুছবেন তখন সমস্ত পছন্দ মুছে ফেলা হবে।

অ্যাপ / ভিউ / পোস্ট / শো html.erb এ কোনও পোস্টের কয়টি পছন্দ রয়েছে তা দেখানোর জন্য এই লাইনটি যুক্ত করুন:

<% = @ post.likes.count%> <% = (@ post.likes.count) == 1? 'পছন্দ': 'পছন্দ'%>

তারপরে হোমপৃষ্ঠায় কোনও পোস্টের কয়টি পছন্দ রয়েছে তা দেখানোর জন্য অ্যাপ / ভিউ / পোস্টস / সূচক html.erb এ এই লাইনটি যুক্ত করুন:

<% = post.likes.count%> <% = (post.likes.count) == 1? 'পছন্দ': 'পছন্দ'%>

পছন্দগুলি সংখ্যা এখানে প্রদর্শিত হয়। লজিকাল বিট পরে সংখ্যার উপর নির্ভর করে "লাইক" বা "লাইক" এ স্যুইচ করা হয়।

একাধিকবার লোক পছন্দ করা বন্ধ করুন

প্রথমত, কোনও ব্যবহারকারী ইতিমধ্যে কোনও ফটো পছন্দ করেছে কিনা তা পরীক্ষা করার জন্য আমাদের একটি পদ্ধতি যুক্ত করতে হবে। ব্যক্তিগত শব্দটির অধীনে, যোগ করুন:

ডিফ ইতিমধ্যে পছন্দ? লাইক.হোইয়ার (ইউজার_আইডি: কারেন্ট_ইউজার.আইডি, পোস্ট_আইডি: প্যারামস [: পোস্ট_আইডি]) বিদ্যমান? শেষ

তারপরে এটিকে আমলে নেওয়ার জন্য আপনার বিল্ড পদ্ধতিটি সম্পাদনা করুন

ইতিমধ্যে পছন্দ হলে ডিএফ তৈরি? ফ্ল্যাশ [: বিজ্ঞপ্তি] = "আপনি একাধিকবার পছন্দ করতে পারবেন না" অন্যথায় @ post.likes.create (ইউজার_আইডি: কারেন্ট_ইউজার.আইডি) শেষ পুনঃনির্দেশ_ পোস্ট পোস্ট (@ পোস্ট) শেষ

"যদি" বিবৃতিটি বর্তমান "ব্যবহারকারীর_আইডি" এবং বর্তমান "পোস্ট_আইডি" সহ ডাটাবেসে একটি "লাইক" আছে কিনা তা যাচাই করে। এর অর্থ হ'ল তাদের অবশ্যই ইতিমধ্যে "পছন্দ" থাকতে হবে। এই ক্ষেত্রে, আমরা আর একটি "লাইক" যুক্ত করি না এবং একটি ত্রুটি বার্তা ফ্ল্যাশ করি না।

ভিন্ন ফাংশন যুক্ত করা হচ্ছে

পছন্দসই নিয়ামকটিতে আমাদের একটি ধ্বংস পদ্ধতি যুক্ত করা দরকার:

ডিফ ধ্বংস যদি! (ইতিমধ্যে পছন্দ হয়েছে?) ফ্ল্যাশ [: বিজ্ঞপ্তি] = "অন্যথায় হতে পারে না" অন্যথায় @ like.destroy শেষ redirect_to পোস্ট_পথ (@ পোস্ট) শেষ

এই পদ্ধতিটি সহ, আমি এটিও নিশ্চিত করি যে তারা অপছন্দ করে যদি তারা ভিন্ন হয় না।

কোনও পছন্দ মুছতে, আপনাকে এটি সন্ধান করতে হবে। সুতরাং আমাদের একটি সন্ধানের মতো পদ্ধতি যুক্ত করতে হবে।

ডিফ ফাইন্ড_লাইক @ লাইক = @ post.likes.find (প্যারামগুলি [: আইডি]) শেষ

নিশ্চিত করুন যে এই পদ্ধতিটি ধ্বংস পদ্ধতিতে ডাকা হয়েছে। এটি নিয়ামকের উপরে রাখুন:

আগে_অ্যাকশন: সন্ধান_মুলক, কেবল: [: ধ্বংস]

এখন আপনি যা করতে পারেন তা হ'ল আপনার পছন্দ নয় এমন একটি বোতাম যুক্ত করুন এবং আপনি পছন্দ মতো বোতামটি ক্লিক করলে এটি প্রদর্শিত হবে তা নিশ্চিত করুন:

<% pre_ Like = @ post.likes.find {| পছন্দ | like.user_id == বর্তমান_উজার.আইডি}%> <% যদি প্রাক_লাইক%> <% = বাটন_তে 'বিপরীত', পোস্ট_লাইক_পথ (@ পোস্ট, প্রিপলক), পদ্ধতি ::%> <% অন্য%> <% = বাটন_তে 'পছন্দ করুন ', পোস্ট_লিক্স_পথ (@ পোস্ট), পদ্ধতি :: পোস্ট%> <% শেষ%>

আমি ইউজারিডের সাথে মিল খুঁজে পেয়ে শুরু করব start যদি একটি থাকে তবে আমি কনট্রাস্ট বোতামটি দেখাব এবং যদি না হয় তবে আমি লাইক বোতামটি রেন্ডার করব। যখন ব্যবহারকারী মুছে ফেলতে ক্লিক করে, তখন আমি পোস্ট এবং তারা সন্ধান_পোস্ট এবং ফাইন্ড_লাইক ব্যবহার করে এমন মতো হস্তান্তর করি এবং তারপরে অনুরূপটি নষ্ট করি।

এবং আপনি শেষ!