আপনি ঠিক কি জানতে চান? অ্যাক্টিভেকর্ডের এমন পদ্ধতি রয়েছে যা জেএসএনে রেকর্ডকে সিরিয়ালাইজ করে। উদাহরণস্বরূপ, আপনার রেল কনসোলটি খুলুন এবং প্রবেশ করুন ModelName.all.to_json
এবং আপনি JSON আউটপুট দেখতে পাবেন। render :json
মূলত to_json
সঠিক হেডার সহ ব্রাউজারে কল করে এবং ফলাফলটি দেয় returns এটি জাভাস্ক্রিপ্টে AJAX কলগুলির জন্য দরকারী যেখানে আপনি জাভাস্ক্রিপ্ট অবজেক্টগুলি ব্যবহার করতে চান। অতিরিক্তভাবে, আপনি callback
JSONP এর মাধ্যমে কল করতে চান এমন কলব্যাকের নাম নির্দিষ্ট করতে বিকল্পটি ব্যবহার করতে পারেন ।
উদাহরণস্বরূপ, আসুন আমরা বলি যে আমাদের কাছে এমন একটি User
মডেল রয়েছে যা দেখতে:{name: 'Max', email:' m@m.com'}
আমাদের এমন একটি কন্ট্রোলারও রয়েছে যা দেখতে দেখতে এটি:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
render json: @user
end
end
এখন, আমরা যদি এই জাতীয় jQuery ব্যবহার করে একটি AJAX কল করি:
$.ajax({
type: "GET",
url: "/users/5",
dataType: "json",
success: function(data){
alert(data.name) // Will alert Max
}
});
আপনি দেখতে পাচ্ছেন, আমরা আমাদের রেল অ্যাপ্লিকেশন থেকে আইডি 5 সহ ব্যবহারকারীকে পেতে এবং এটি আমাদের জাভাস্ক্রিপ্ট কোডে ব্যবহার করতে সক্ষম হয়েছি কারণ এটি একটি জেএসএন অবজেক্ট হিসাবে ফিরে এসেছে। কলব্যাক বিকল্পটি প্রথম এবং একমাত্র যুক্তি হিসাবে JSON অবজেক্টের সাথে পাস করা নামের একটি জাভাস্ক্রিপ্ট ফাংশনটি কল করে।
callback
বিকল্পের উদাহরণ দেওয়ার জন্য , নিম্নলিখিতটি একবার দেখুন:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
render json: @user, callback: "testFunction"
end
end
এখন আমরা নীচে JSONP অনুরোধটি ক্র্যাক করতে পারি:
function testFunction(data) {
alert(data.name); // Will alert Max
};
var script = document.createElement("script");
script.src = "/users/5";
document.getElementsByTagName("head")[0].appendChild(script);
এই জাতীয় কলব্যাক ব্যবহারের অনুপ্রেরণাটি সাধারণত ব্রাউজারের সুরক্ষাগুলি নিষ্ক্রিয় করে যা ক্রস অরিজিন রিসোর্স ভাগ করে নেওয়া (সিওআরএস) সীমাবদ্ধ করে। তবে JSONP তেমন বেশি ব্যবহৃত হয় না, কারণ সুরক্ষিত ও সহজতর CORS- র উদ্ভাবনের জন্য অন্যান্য কৌশল রয়েছে।