ruby on rails - আমি কিভাবে রুবি রুবি বর্তমান পরম URL পেতে পারি?




ruby-on-rails (20)

Rails 3.2 বা রেল 4+ জন্য

বর্তমান ইউআরএল পেতে আপনি request.original_url ব্যবহার করা উচিত।

এই পদ্ধতিটি original_url পদ্ধতিতে নথিভুক্ত করা হয়েছে, তবে আপনি যদি উত্সাহী হন তবে বাস্তবায়নটি হল:

def original_url
  base_url + original_fullpath
end

Rails 3 জন্য:

আপনি "#{request.protocol}#{request.host_with_port}#{request.fullpath}" লিখতে পারেন "#{request.protocol}#{request.host_with_port}#{request.fullpath}" , request.url এখন request.url করা হয়েছে।

রেল 2 জন্য:

আপনি request.url পরিবর্তে request.url লিখতে পারেন। এটি হোস্ট সহ প্রোটোকল (সাধারণত http: //) সংহত করে এবং request_uri আপনাকে সম্পূর্ণ ঠিকানা দিতে সম্মত হয়।

আমি রুবি ভিউতে আমার রুবিতে বর্তমান পরম URL টি কীভাবে পেতে পারি?

request.request_uri শুধুমাত্র আপেক্ষিক URL প্রদান করে।



Rails উপর রুবি 3.1.0.আরসি 4:

 request.fullpath

Ruby 1.9.3-পি 1 9 4 এবং রেল 3.22 রুবি ব্যবহার করে:

যদি request.fullpath আপনার জন্য কাজ না করে, request.env ["HTTP_REFERER"] চেষ্টা করুন

এখানে আমার গল্প নিচে।

আমি ক্রমবর্ধমান পৃষ্ঠাগুলির জন্য বর্তমান URL (যা তার ব্রাউজারে ব্যবহারকারীর জন্য অ্যাড্রেস বারে দেখানো হয়) সনাক্ত করে একই সমস্যা পেয়েছে, যা বিভিন্ন কন্ট্রোলারগুলির তথ্য সংযোজন করে, উদাহরণস্বরূপ, http://localhost:3002/users/1/history/issues

ব্যবহারকারী বিভিন্ন ধরনের বিভিন্ন তালিকা পরিবর্তন করতে পারেন। সমস্ত তালিকা বিভিন্ন কন্ট্রোলার / আংশিক (পুনরায় লোড না করে) থেকে অ্যাজ্যাক্সের মাধ্যমে লোড করা হয়।

সমস্যা তালিকার প্রতিটি আইটেমের পিছনে বোতামের জন্য সঠিক পথ সেট করা ছিল যাতে ব্যাক বোতামটি নিজের পৃষ্ঠায় এবং সংযোজিত পৃষ্ঠা ইতিহাসে উভয় সঠিকভাবে কাজ করতে পারে।

যদি আমি request.fullpath ব্যবহার করি, এটি শেষ জাভাস্ক্রিপ্ট অনুরোধের পথটি ফেরত দেয় যা অবশ্যই আমি যে URL টি খুঁজছি তা নয়।

তাই আমি request.env ["HTTP_REFERER"] ব্যবহার করেছি যা সর্বশেষ পুনঃলোড হওয়া অনুরোধের URL সংরক্ষণ করে।

এখানে একটি সিদ্ধান্ত নিতে আংশিক থেকে একটি উদ্ধৃতাংশ

- if request.env["HTTP_REFERER"].to_s.scan("history").length > 0
  - back_url = user_history_issue_path(@user, list: "needed_type")
- else
  - back_url = user_needed_type_issue_path(@user)
- remote ||= false
=link_to t("static.back"), back_url, :remote => remote

আপনি url_for(:only_path => false) ব্যবহার করতে পারেন url_for(:only_path => false)


আপনি নির্দিষ্ট হতে চান, অর্থাত, আপনি আপনার প্রয়োজন পাথ জানেন:

link_to current_path(@resource, :only_path => false), current_path(@resource)

আপনি রেল জন্য 3.2 কোনো ব্যবহার করতে পারেন 3.2:

request.original_url
or
request.env["HTTP_REFERER"]
or
request.env['REQUEST_URI']

আমি মনে করি এটা সব জায়গায় কাজ করবে

"#{request.protocol}#{request.host}:#{request.port}#{request.fullpath}"

আপনি হয় ব্যবহার করতে পারেন

request.original_url 

অথবা

"#{request.protocol}#{request.host_with_port}" 

বর্তমান URL পেতে।


আমি আবেদন URL প্রয়োজন কিন্তু subdirectory সঙ্গে। আমি ব্যবহার করতাম:

root_url(:only_path => false)

আমি মনে করি request.domain কাজ করবে, কিন্তু যদি আপনি একটি sub ডিরেক্টরির মধ্যে যেমন Blah.blah.com চান? এই মত কিছু কাজ করতে পারে:

<%= request.env["HTTP_HOST"] + page = "/" + request.path_parameters['controller'] + "/" + request.path_parameters['action'] %>

আপনার পাথ গঠন উপর ভিত্তি করে পরামিতি পরিবর্তন করুন।

আশা করি এইটি কাজ করবে!


এটি Rails 3.0 এ রুবিয়ের জন্য কাজ করে এবং Rails এর রুবিয়ের বেশিরভাগ সংস্করণগুলি দ্বারা সমর্থিত হওয়া উচিত:

request.env['REQUEST_URI']

কোন প্রশ্ন জিজ্ঞাসা পরামিতি অনুরোধ URL পেতে।

def current_url_without_parameters
  request.base_url + request.path
end

দেখে মনে হচ্ছে request_uri রুবিতে রুবি 3 এ request_uri করা হয়েছে।

Using #request_uri is deprecated. Use fullpath instead.

বর্তমান URL টি ফেরত দিতে এবং অন্যান্য প্যারামিটারগুলিতে মার্জ করার মঞ্জুরি দেওয়ার জন্য আপনি অ্যাপ্লিকেশন current_url এই current_url পদ্ধতি যুক্ত করতে পারেন

# https://x.com/y/1?page=1 
# + current_url( :page => 3 )
# = https://x.com/y/1?page=3
def current_url(overwrite={})
    url_for :only_path => false, :params => params.merge(overwrite)
end

উদাহরণ ব্যবহার:

current_url --> http://...
current_url(:page=>4) --> http://...&page=4

যদি আপেক্ষিকভাবে, আপনি শুধু ডোমেন ছাড়া মানে, তারপর request.domain । ডোমেন দেখুন।


রেলের জন্য 3:

request.fullpath



Rails 3.2 বা Rails 4 এর জন্য এভাবেই "request.original_url" রেফারেন্স: মূল URL পদ্ধতিটি পান

Rails 3 এর জন্য request.url অব্যবহৃত। আমরা সংযোজন করে পরম পথ পেতে পারি

"#{request.protocol}#{request.host_with_port}#{request.fullpath}"

রেল 2 জন্য

request.url

 url_for(params)

এবং আপনি সহজেই কিছু নতুন পরামিতি যুক্ত করতে পারেন:

url_for(params.merge(:tag => "lol"))

request.env["REQUEST_URI"]

রেলে কাজ 2.3.4 পরীক্ষা এবং অন্যান্য সংস্করণ সম্পর্কে জানি না।





url