এটি রুবি কোডের একটি ব্লক যা একটি রেলস সহায়তাকারী পদ্ধতির সুবিধা নেয়। আপনি যদি এখনও ব্লকের সাথে পরিচিত না হন তবে আপনি এগুলিকে রুবিতে দেখতে পাবেন।
respond_to
এটি একটি রেলস সহায়তাকারী পদ্ধতি যা নিয়ামক শ্রেণীর সাথে সংযুক্ত থাকে (বা বরং এটির সুপার বর্গ)। এটি প্রতিক্রিয়াটি উল্লেখ করছে যা ভিউতে প্রেরণ করা হবে (যা ব্রাউজারে যাচ্ছে)।
আপনার উদাহরণের ব্লকটি ডেটা ফর্ম্যাট করে - ব্লকের একটি 'ফর্ম্যাট' পরামিতি পেরিয়ে - যখনই কোনও ব্রাউজার এইচটিএমএল বা জেসন ডেটার জন্য কোনও অনুরোধ করে তখন তাকে নিয়ামক থেকে দর্শনে পাঠানো হবে।
আপনি যদি নিজের লোকাল মেশিনে থাকেন এবং আপনার পোষ্টের স্ক্যাফোল্ড সেট আপ হয় তবে আপনি যেতে পারেন http://localhost:3000/posts
এবং আপনি আপনার সমস্ত পোস্ট এইচটিএমএল ফর্ম্যাটে দেখতে পাবেন। তবে, আপনি যদি এটি টাইপ করেন http://localhost:3000/posts.json
:, তারপরে আপনি সার্ভার থেকে প্রেরিত জসন অবজেক্টে আপনার সমস্ত পোস্ট দেখতে পাবেন।
এটি জাভাস্ক্রিপ্ট ভারী অ্যাপ্লিকেশনগুলি তৈরি করার জন্য খুব কার্যকর যা সার্ভার থেকে জেসনকে পিছনে পিছনে যেতে হবে। আপনি যদি চান, আপনি সহজেই আপনার রেলগুলিতে ব্যাক-এন্ডে একটি জসন এপি তৈরি করতে পারেন এবং কেবলমাত্র একটি দর্শন পাস করতে পারেন - যেমন আপনার পোস্ট কন্ট্রোলারের সূচী দর্শন। তারপরে আপনি ডেটা ম্যানিপুলেট করতে এবং নিজের ইন্টারফেস তৈরি করতে Jquery বা ব্যাকবোন (বা উভয়) এর মতো একটি জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করতে পারেন । এগুলিকে অ্যাসিক্রোনাস ইউআই বলা হয় এবং এগুলি সত্যই জনপ্রিয় হয়ে উঠেছে (জিমেইল এক)। এগুলি খুব দ্রুত এবং শেষ ব্যবহারকারীকে ওয়েবে আরও ডেস্কটপের মতো অভিজ্ঞতা দেয়। অবশ্যই, এটি আপনার ডেটা ফর্ম্যাট করার একটাই সুবিধা।
রেল 3 এটি লেখার উপায় এটি হবে:
class PostsController < ApplicationController
# GET /posts
# GET /posts.xml
respond_to :html, :xml, :json
def index
@posts = Post.all
respond_with(@posts)
end
#
# All your other REST methods
#
end
respond_to :html, :xml, :json
শ্রেণীর শীর্ষে রেখে আপনি আপনার নিয়ামককে আপনার মতামতে প্রেরণ করতে চান এমন সমস্ত ফর্ম্যাটগুলি ঘোষণা করতে পারেন।
তারপরে, কন্ট্রোলার পদ্ধতিতে আপনাকে যা করতে হবে তা হ'ল রেসপন্স_উইথ (@ যাইহোক_বজেক্ট_আপনি_হ্যাভ)
এটি কেবল আপনার কোডটিকে সরল করে দেয় যা রেলগুলি স্বয়ংক্রিয়ভাবে জেনারেট করে than
আপনি যদি এর অভ্যন্তরীণ কাজগুলি সম্পর্কে জানতে চান ...
আমি যা বুঝি সেগুলি থেকে, প্রকৃত বিন্যাসটি কী হতে চলেছে তা নির্ধারণের জন্য রেলগুলি বস্তুগুলিকে অন্তর্নির্মিত করে। 'বিন্যাস' ভেরিয়েবলের মানটি এই অন্তর্নির্ধারণের উপর ভিত্তি করে। রেয়েলগুলি সামান্য বিট তথ্য দিয়ে পুরো কাজটি করতে পারে। সরল @ পোষ্ট বা: পোস্ট কতটা দূরে যাবে সে সম্পর্কে আপনি অবাক হবেন।
উদাহরণস্বরূপ, যদি আমার কাছে _user.html.erb আংশিক ফাইল থাকে যা দেখতে এরকম দেখায়:
_user.html.erb
<li>
<%= link_to user.name, user %>
</li>
তারপরে, আমার সূচক দর্শনে এটিই একা রেলগুলিকে জানতে দেবে যে এটি 'ব্যবহারকারীর' আংশিক সন্ধান করা উচিত এবং সমস্ত 'ব্যবহারকারীর' অবজেক্টের মাধ্যমে পুনরাবৃত্তি করতে হবে:
index.html.erb
<ul class="users">
<%= render @users %>
</ul>
রেলগুলিকে জানাতে হবে যে এটি 'ব্যবহারকারীর' আংশিক এবং সমস্ত ব্যবহারকারীদের অবজেক্টের মাধ্যমে পুনরাবৃত্তি করা দরকার:
আপনি এই ব্লগ পোস্টে দরকারী এটি করতে পারেন: http://archives.ryandaigle.com/articles/2009/8/6/what-s-new-in-edge-rails-cleaner-restful-controllers-w-respond_with
আপনি উত্সটি অনুধাবন করতে পারেন: https://github.com/rails/rails