"রেন্ডার: কিছুই => সত্য" খালি প্লেইন টেক্সট ফাইলটি ফেরত দেয়?


116

আমি কারাগারে 2.3.3 এ আছি এবং আমার একটি লিঙ্ক তৈরি করা দরকার যা একটি পোস্টের অনুরোধ প্রেরণ করে।

আমার দেখতে দেখতে এমন একটি রয়েছে:

= link_to('Resend Email', 
  {:controller => 'account', :action => 'resend_confirm_email'}, 
  {:method => :post} )

যা লিঙ্কটিতে উপযুক্ত জাভাস্ক্রিপ্ট আচরণ করে:

<a href="/account/resend_confirm_email" 
  onclick="var f = document.createElement('form'); 
  f.style.display = 'none'; 
  this.parentNode.appendChild(f); 
  f.method = 'POST'; 
  f.action = this.href;
  var s = document.createElement('input'); 
  s.setAttribute('type', 'hidden'); 
  s.setAttribute('name', 'authenticity_token'); 
  s.setAttribute('value', 'EL9GYgLL6kdT/eIAzBritmB2OVZEXGRytPv3lcCdGhs=');
  f.appendChild(s);
  f.submit();
  return false;">Resend Email</a>'

আমার নিয়ামক অ্যাকশন কাজ করছে, এবং কিছুই রেন্ডারে সেট করেছে:

respond_to do |format|
  format.all { render :nothing => true, :status => 200 }
end

তবে আমি যখন লিঙ্কটি ক্লিক করি তখন আমার ব্রাউজারটি "resend_confirm_email" নামে একটি খালি পাঠ্য ফাইল ডাউনলোড করে।

কি দেয়?


রেল 5 এর জন্য, আপনি এই উত্তরটি পর্যালোচনা করতে পারেন stackoverflow.com/a/34688727/1770571
সালমা গোমা

উত্তর:


146

আপডেট: এটি লিগ্যাসি রেল সংস্করণগুলির জন্য একটি পুরানো উত্তর। 4+ রেলের জন্য নীচে উইলিয়াম ডেনিসের পোস্টটি দেখুন।

আমার মতামত মতামত টাইপ প্রতিক্রিয়া মত সঠিক না, বা আপনার ব্রাউজারে সঠিকভাবে ব্যাখ্যা করা হয় নি। প্রতিক্রিয়া কি সামগ্রী তা টাইপ করতে আপনার এইচটিপি শিরোনামগুলি দুবার পরীক্ষা করে দেখুন।

যদি এটি ব্যতীত অন্য কোনও কিছু হয় তবে text/htmlআপনি এই জাতীয় বিষয়বস্তুটিকে ম্যানুয়ালি সেট করার চেষ্টা করতে পারেন:

render :nothing => true, :status => 200, :content_type => 'text/html'

258

যেহেতু রেল 4, headএখন তার চেয়ে বেশি পছন্দ করা হয় render :nothing1

head :ok, content_type: "text/html"

# or (equivalent)

head 200, content_type: "text/html"

উপর পছন্দ হয়

render nothing: true, status: :ok, content_type: "text/html"

# or (equivalent)

render nothing: true, status: 200, content_type: "text/html"

তারা প্রযুক্তিগতভাবে একই। আপনি যদি সিআরএল ব্যবহারের জন্য প্রতিক্রিয়াটি দেখেন তবে আপনি দেখতে পাবেন:

HTTP/1.1 200 OK
Connection: close
Date: Wed, 1 Oct 2014 05:25:00 GMT
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
X-Runtime: 0.014297
Set-Cookie: _blog_session=...snip...; path=/; HttpOnly
Cache-Control: no-cache

তবে কলিং কল headকরার আরও সুস্পষ্ট বিকল্প সরবরাহ করে render :nothingকারণ এটি এখন স্পষ্ট যে আপনি কেবল এইচটিটিপি শিরোনাম তৈরি করছেন।


  1. http://guides.rubyonrails.org/layouts_and_rendering.html#using-head-to-build-header-only-responses

যেহেতু এটিও রেল 3 এ কাজ করে, তাই এটির জন্যও এটি পছন্দসই সমাধান হওয়া উচিত (তবে স্পষ্টতই ওপি একটি রেল ২.৩ অ্যাপে রয়েছে সুতরাং নির্বাচিত উত্তরটি যথাযথ ছিল)।
আসফান্দ কাজী

2
head 200304আমার জন্য প্রতিক্রিয়া ফলাফল (রেল 4.1.6)। কনসোল শো 200 স্থিতি কোড, কিন্তু Chrome (নেটওয়ার্ক প্যানেল) শো 304. render :nothing => trueপদ্ধতির কাজ করেন।
বাস্তিয়ান হফম্যান

2
যদি কেবল একটি শিরোনামই ফেরত দেওয়া হয় তবে বিষয়বস্তুর ধরণ কি প্রয়োজনীয়?
উসাগি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.