পেরেল পরম বুঝিয়েছেন?


228

কেউ কি paramsরেলস নিয়ন্ত্রকের মধ্যে ব্যাখ্যা করতে পারে : তারা কোথা থেকে এসেছে এবং তারা কী উল্লেখ করছে?

  def create
    @vote = Vote.new(params[:vote])
    item = params[:vote][:item_id]
    uid = params[:vote][:user_id]
    @extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])
    last_vote_time = @extant.created_at unless @extant.blank?
    curr_time = Time.now
  end

আমি এই কোডটি লাইন বাই লাইন পড়তে সক্ষম হতে চাই এবং কী হচ্ছে তা বুঝতে।


2
সার্ভার সাইড ওয়েব বিকাশে আপনার পটভূমি কী? আপনি ইতিমধ্যে কোন প্রযুক্তি জানেন?
মরিসিও লিনহারেস 21

3
আমি কয়েক বছর ধরে এইচটিএমএল এবং সিএসএসের সাথে আছি। ক্লাস নেওয়া হয়েছে যা পিএইচপি, জেএস এবং জাভা ব্যবহার করে। যদিও পিএইচপি সহ খুব কম এমভিসি ব্যবহৃত হয়। আমি সত্যিই জাভা ব্যবহার করে প্রোগ্রামিং শিখেছি। এবং আমি ডেটাবেস তত্ত্ব পুরোপুরি বুঝতে।
ড্রু

উত্তর:


281

প্যারামগুলি পৃষ্ঠার অনুরোধ করার সময় ব্যবহারকারীর ব্রাউজার থেকে আসে। এইচটিটিপি জিইটি অনুরোধের জন্য, যা সর্বাধিক সাধারণ, প্যারামগুলি ইউআরএলে এনকোড করা থাকে। উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারীর ব্রাউজার অনুরোধ করে

http://www.example.com/?foo=1&boo=octopus

তারপরে params[:foo]"1" হবে এবং params[:boo]"অক্টোপাস" হবে।

এইচটিটিপি / এইচটিএমএলগুলিতে, প্যারামগুলি সত্যিই কী-মূল জোড়াগুলির একটি সিরিজ যেখানে কী এবং মানটি স্ট্রিং হয় তবে প্যারাগুলিকে ভিতরে হ্যাশযুক্ত হ্যাশ হিসাবে তৈরি করার জন্য রুবি অন রুশের একটি বিশেষ বাক্য গঠন রয়েছে। উদাহরণস্বরূপ, যদি ব্যবহারকারীর ব্রাউজারটি অনুরোধ করে

http://www.example.com/?vote[item_id]=1&vote[user_id]=2

তারপরে params[:vote]একটি হ্যাশ হবে, params[:vote][:item_id]"1" হবে এবং params[:vote][:user_id]"2" হবে।

রুবেল অন রেলস প্যারামগুলি পিএইচপি-তে $ _REQUEST অ্যারের সমতুল্য ।


13
প্যারামগুলি কেবলমাত্র ডেটা পেয়ে এবং পোস্ট করে তবে $ _REQUEST এর সমেত, _RE _REQUEST এর সমতুল্য, প্রাপ্ত, পোস্ট এবং কুকি ডেটা অন্তর্ভুক্ত।
পার্জিফল

3
@ রেনোকোর পোস্টের ডেটাও রেল paramsহ্যাশের সাথে অন্তর্ভুক্ত রয়েছে । কুকি ডেটা sessionহ্যাশ অন্তর্ভুক্ত করা হয় ।
রিচার্ড জোন্স

এই উত্তরটি প্যারামের অন্য একটি উত্স ছেড়ে দিয়েছে: URL the আরও তথ্যের জন্য হামারের উত্তর দেখুন।
রিচার্ড জোন্স

1
টোস্টারলভিন, মনে হচ্ছে আপনি আমার উত্তরের দ্বিতীয় বাক্যটি পড়েন নি বা প্রথম উদাহরণটি দেখেছেন না।
ডেভিড গ্রেসন

1
@ অঙ্কিতধিংরা ... আমি মনে করি এটি সর্বদা স্ট্রিং থাকবে কারণ এইচটিটিপি প্যারামগুলি সত্যই কেবল মূল / মান জুড়ি এবং রেলগুলি (সম্ভবত র্যাক রত্ন) পার্স করে যা মূল মান অনুসারে হ্যাশগুলি এবং অ্যারেগুলিতে পরিণত হয়, তবে আমি সাজানোর কিছুই দেখিনি have যা রেলগুলিকে বলে যে মানটি একটি সংখ্যা।
রুবিপ্রিন্স

75

অন্যরা উল্লেখ করেছে যে, paramsজিইটি অনুরোধের কোয়েরি স্ট্রিং, বা একটি পোষ্ট অনুরোধের ফর্ম ডেটা থেকে মানগুলি আসতে পারে, তবে তারা যে তৃতীয় স্থান থেকে আসতে পারে তাও রয়েছে: ইউআরএলটির পথ।

আপনারা জানেন যে, কারাগুলি তাদের সম্পর্কিত নিয়ামক ক্রিয়াকলাপের জন্য অনুরোধগুলি সরাসরি নির্দেশ করতে রাস্তা নামে পরিচিত কিছু ব্যবহার করে। এই রুটে এমন কিছু অংশ থাকতে পারে যা ইউআরএল থেকে বের করে এনে দেওয়া হয় putparams । উদাহরণস্বরূপ, আপনার যদি এই জাতীয় কোনও রুট থাকে:

match 'products/:id', ...

তারপরে একটি ইউআরএল-এর অনুরোধ http://example.com/products/42সেট params[:id]করা হবে 42


আপনি কীভাবে দ্বিতীয় পরম পাবেন? লাইক / স্কোয়াড / আইডি / সদস্য / আইডি / স্টাফ
ওয়েটেমস্টেভ

48

প্যারামগুলিতে প্যারামিটারগুলির নিম্নলিখিত তিনটি গ্রুপ রয়েছে:

  1. ব্যবহারকারী সরবরাহিত পরামিতি
    • পাওয়া (http://domain.com/url?param1=value1¶m2=value2 প্যারাম সেট করবে [: param1] এবং প্যারাম [: param2])
    • পোস্ট করুন (যেমন জেএসএন, এক্সএমএল স্বয়ংক্রিয়ভাবে বিশ্লেষণ করে প্যারামে সংরক্ষণ করা হবে)
    • দ্রষ্টব্য: ডিফল্টরূপে, রেলগুলি ব্যবহারকারী সরবরাহিত প্যারামিটারগুলি সদৃশ করে এবং সেগুলিকে প্যারামগুলিতে সংরক্ষণ করে [: ব্যবহারকারী] যদি ব্যবহারকারীকন্ট্রোলারে থাকে তবে মোড়ানো_পরিমিতি সেটিংয়ের মাধ্যমে পরিবর্তন করা যায়
  2. রাউটিং পরামিতি
    • match '/user/:id' ways.rb এ প্যারাম সেট করা হবে [: আইডি]
  3. ডিফল্ট পরামিতি
    • params[:controller]এবং params[:action]সর্বদা উপলভ্য এবং এতে বর্তমান নিয়ামক এবং ক্রিয়া রয়েছে

1
আপনি কি User supplied parametersআরও একটু অধীনে আপনার নোট প্রসারিত করতে পারেন ? উদাহরণস্বরূপ, ইউজার্স কনট্রোলারের মধ্যে প্যারাম হ্যাশের একটি উদাহরণ সহায়ক হবে। আপনার উদাহরণটি এটিকে শ্যাশ করে তোলে যেমন হ্যাশ দেখতে এমন কিছু দেখায়: এটি {first_name: "mike", user: {first_name: "mike"} ...} কি সঠিক?
7stud

1
আমি রেল 4 এ দেখছি না। উদাহরণস্বরূপ {"_method"=>"put", "authenticity_token"=>"gubHya6uQrQLjPRXhOC0RUuCRdn7NFr6CeKrbRfBSHI=", "ripe"=>"true", "action"=>"update", "controller"=>"apples", "id"=>"4"},। আমি ভুল হলে আমাকে ক্ষমা করুন, আমি রেলের শুরুর দিকে। আপনার নোট অনুসারে, আমার দেখতে হবে: রেল 4 এর শক্তিশালী পরামিতিগুলির{"_method"=>"put", "authenticity_token"=>"gubHya6uQrQLjPRXhOC0RUuCRdn7NFr6CeKrbRfBSHI=", "ripe"=>"true", "apple" => {"ripe"=>"true"}, "action"=>"update", "controller"=>"apples", "id"=>"4"} সাথে এটি করার দরকার আছে কিনা তা আমি জানি না।
7stud

2
আমি রেল 4 এ সদৃশ প্যারামগুলি দেখতে পাচ্ছি, তবে কেবল জসন পোষ্ট অনুরোধের অধীনে (অ্যাঙ্গুলারজগুলি ব্যবহার করে) রেলের নিজস্ব এইচটিএমএল পোস্টের অধীনে নেই। এই লিঙ্কটি ব্যাখ্যা করেছে কেন: স্ট্যাকওভারফ্লো.com
Homan

13

মূলত, প্যারামিটারগুলি রেল অ্যাপ্লিকেশনটিতে ব্যবহারকারী নির্দিষ্ট ডেটা।

আপনি যখন কোনও ফর্ম পোস্ট করেন, আপনি সাধারণত এটি জিইটি অনুরোধের বিপরীতে পোষ্ট অনুরোধের সাথে করেন। আপনি যদি রেলগুলি অনুরোধগুলি জিইটি অনুরোধ হিসাবে ভাবেন, আপনি যখন সাইট ব্রাউজ করেন, যদি এটি সহায়তা করে।

আপনি যখন একটি ফর্ম জমা দিন, নিয়ন্ত্রণটি অ্যাপ্লিকেশনটিতে ফিরে ফেলে দেওয়া হয়। আপনি ফর্মটিতে জমা দেওয়া মানগুলি কীভাবে পাবেন? paramsকিভাবে হয়।

আপনার কোড সম্পর্কে @vote = Vote.new params[:vote]প্যারামের ডেটা ব্যবহার করে ডাটাবেসে নতুন ভোট তৈরি করুন [: ভোট]। আপনার জমা দেওয়া ফর্মটি দেওয়া ব্যবহারকারীটির নাম অনুসারে নামকরণ করা হয়েছে: ভোট, এর সমস্ত ডেটা এইটিতে রয়েছে: হ্যাশের ভোটের ক্ষেত্র।

আইটেম পেতে পরবর্তী দুটি লাইন ব্যবহৃত হয় এবং ইউআইডি ব্যবহারকারী ফর্মটিতে জমা দিয়েছেন।

@extant = Vote.find(:last, :conditions => ["item_id = ? AND user_id = ?", item, uid])

আইটেম_আইডি = আইটেম এবং ইউজার_আইডি = ইউআইডি শর্তাদি সহ নতুন, বা সর্বশেষ সন্নিবেশ করা হয়েছে, ডাটাবেস থেকে ভোট দিন।

পরবর্তী লাইনে সর্বশেষ ভোটের সময় এবং বর্তমান সময় লাগে।


6

রেলের পাশে, paramsএমন একটি পদ্ধতি যা কোনও ActionController::Parametersঅবজেক্টকে ফেরত দেয় । Https://stackoverflow.com/a/44070358/5462485 দেখুন


3
এটি ব্যাখ্যা করার জন্য +1 paramsa রুবি পদ্ধতিগুলি থেকে ভেরিয়েবলগুলি পৃথক করতে অসুবিধা করতে পারে
সমরপ করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.