রেলগুলিতে html.erb টেম্পলেটগুলিতে মন্তব্যগুলি ব্লক করুন


119

রুবি কোডের সাথে এইচটিএমএল মিশ্রিত আপনি কীভাবে মন্তব্য করবেন?

some text <% ... %> more text <%= ... %>
something else
<% ... %>

জেএসপিতে এটি সত্যই সহজ: <%-- ... --%>তবে আমি রেলগুলিতে কোনও সংক্ষিপ্ত বিকল্প খুঁজে পাচ্ছি না।

সাধারণ এইচটিএমএল মন্তব্যগুলি <!-- ... -->কাজ করে না: রুবি কোড এখনও কার্যকর করা হয় এবং ত্রুটিগুলি চিৎকার করে।

if falseএইচটিএমএল মন্তব্য সহ ব্যবহার করার একটি বিকল্প রয়েছে , তবে এটি বেশ ভার্জোজ, আইডিইগুলি সমর্থন করে না উল্লেখ করার জন্য নয়।

খাঁটি রুবি থেকে একটি বিকল্প আসছে যা আশ্চর্যজনকভাবে কাজ করে।

<%
=begin %>
... html and ruby code goes here
<%
=end %>

এটি সাধারণত সূক্ষ্ম, ব্যয়বহুল, অদ্ভুত চেহারা এবং আমি জানি যে কোনও রুবি আইডিই সমর্থন করে না (হ্যাঁ, আমি একটি কীস্ট্রোক দিয়ে মন্তব্য / মন্তব্য করতে চাই)।

আমি কৌতুহলী, রেললাইনগুলিতে এই কাজ করার কোনও 'কর্মকর্তা' আছে কি?

ধন্যবাদ!

উত্তর:


115

আমি একটি সমাধান হিসাবে গণনা করব না, তবে সম্ভবত একটি এর মধ্যে অংশ আবদ্ধ

<% if false %>
   ...
<% end %>

অথবা আপনি যদি কিছুটা নোংরা অনুভব করেন তবে এমন একটি সহায়তাকারী তৈরি করুন যা কিছুতেই সহজ হয় না।

আমার কখনই এটির প্রয়োজন হয়নি, তবে আমি হোঁচট খেয়েছি বলে মনে হয় এটির জন্য বাইরের কোনও সমাধান নেই।


@ ক্ল্লো আপনি নিজের মন্তব্যটি আমাকে কেন নির্দেশ করেছেন তা সম্পর্কে নিশ্চিত নন তবে আপনি ঠিকঠাক <%= false %>কাজ করবেন না। আপনার প্রদত্ত সমাধানটি চেষ্টা করা উচিত যা <% if false %>
জামেস্ক

@ জামেস্ক আপনি আমার প্রতিক্রিয়া দেখার আগে আপনার মন্তব্য মুছে ফেলা হয়েছে। আপনি যেখানে ব্যবহার করবেন বলেছিলেন সেখানে কেউ আপনার মন্তব্য মুছে ফেলেছে <%# if false %>
ক্লো

162

একক লাইনে মন্তব্য করার জন্য এটি ব্যবহার করুন:

<%# your_ruby_code %>

একাধিক লাইনের জন্য

<% 
=begin %>  <% ruby_code %>
<% 
=end %>

আপনি যা বলেছেন তা কাজ করবে।


2
আমি জানি এটি আরও সহজ কিছু আছে কিনা আমি আগ্রহী :)
নিকিতা রায়বাক

2
= শুরু আমি মনে করি শুরু - শেষটি সব হবে = শেষ # আপনি আমার মন্তব্যটিকে সম্পূর্ণ মন্তব্য হিসাবে উপেক্ষা করতে পারেন: পি
গারফিল্ড

3
যদি = নতুন লাইনের শুরুতে ঠিক উত্তরের মতো হয় তবে এটি কাজ করে
ধাওয়াল

যদি এটি <% =%> এর মতো হয় তবে কী হবে? সমান চিহ্নটির আগে বা পরে হ্যাশটি কোথায় যাবে?
বিকেএসপুরজন

ওহো, মাল্টলাইন কোড সহ একটি মন্তব্য যুক্ত করার চেষ্টা করেছে। পরিবর্তে একটি উত্তর পোস্ট করবে।
ViggoV

29

=beginপদ্ধতির বিরক্তিকর কারণ হল:

  1. এটি একক লাইনে মিশ্রিত এইচটিএমএল এবং রুবি (বা কেবল HTML) এর জন্য কাজ করে না for
  2. এটি টাইপ করতে বিরক্তিকর

<% if false %>পদ্ধতির কাজ, কিন্তু এটা অদ্ভুত দেখায় এবং অন্য যে কেউ আপনার কোড এ দেখায় আপনার উদ্দেশ্য সম্পর্কে একটি ইঙ্গিতটি দেয় না।

আমার সমাধানটি নিম্নরূপ:

ইন application_helper.rb, একটি পদ্ধতি যুক্ত করুন যাতে:

def comment
end

তারপরে আপনার দেখার টেমপ্লেটে, আপনি বলতে পারেন:

<% comment do %>Some stuff that won't be rendered...<% end %>

এটি কাজ করে কারণ যে কোনও রুবি পদ্ধতি একটি ব্লক নিতে পারে, তবে যদি আপনার পদ্ধতিতে একটি অন্তর্ভুক্ত না করে তবে নীরবে পাস-ইন ব্লকটি উপেক্ষা করবে yield


3
আপনি এটিকে <% মন্তব্য করুন%> ... <% মন্তব্য শেষ%> হিসাবেও লিখতে পারেন। আমি এই বাক্যবিন্যাসকে উত্সাহ পাঠ্যে যুক্ত করেছি যাতে এটি এমনকি একটি বাস্তব মন্তব্যের মতো দেখা যায়।
মারিয়ানো ক্যাভালো

1
সুন্দর সমাধান !! এক উন্নতি: নিষ্ক্রিয় করতে কোড মন্তব্য এটি একটি হ্যাক ধরনের, তাই বরং পদ্ধতি কল ignoreবা disableএবং আমরা একটি সম্পূর্ণরূপে শব্দার্থিক সমাধান পাবেন:<% ignore do %>…<% end %>
tanius



6

এরব ট্যাগগুলি মন্তব্য করতে, খোলার ট্যাগটিতে সাইন ইন করার আগে রুবি মন্তব্য হ্যাশ প্রতীক ব্যবহার করুন

<p>
 This is some text I want to keep
 <%= @some_object.some_attribute %>
</p>
<p>
  I want to keep this text but comment out the erb tag
  <%#= @some_object.another_attribute %>
</p>
<!--
<p>
  I want all of this text commented out including the erb tag
  <%#= @some_object.some_attribute %>
</p>
-->
<!--
<p>
 I just want this html commented out but I want to keep the erb tag
 <%= @some_object.some_attribute %>
</p>
-->

আমি যতদূর বুঝতে পেরেছি, তিনি একটি বহুমুখী মন্তব্য-আউট সমাধানের সন্ধান করছেন: যদি আমার কাছে এন লাইনগুলির একটি ব্লক থাকে তবে আমি কেবল উপরের এবং নীচে একটি লাইন যুক্ত করতে সক্ষম হতে চাই (বা সম্ভবত একটি দম্পতি) এবং এটি পেতে চাই হবে। আমি পুরো ব্লকটি সম্পাদনা করতে চাই না।
dionyziz

6

যেহেতু আপনি <% %>একটি রুবি ব্লক লাগাতে ব্যবহার করতে পারেন , এটি অবশ্যই এতে মন্তব্য দেওয়ার জন্য ব্যবহার করা যেতে পারে।

একটি সহজ এবং মার্জিত সমাধান দেখে মনে হবে ...

<%
# See! I am a Ruby Comment
# And I am multi-line
# I look like a recognizable ruby comment block too
# and not so complex
# The only drawback with me is the Hash symbol you have to repeat
# But it's the norm, isn't it?
%>

6
এটি কাজ করে না। ব্লক মন্তব্যের অভ্যন্তরে যে কোনও রুবি ট্যাগ বাইরের ব্লকটি বন্ধ করে দেবে।
হোভিস বিডল

4

= আরম্ভের পরে আপনার%> লাগাতে হবে না

<%
=begin

code code code code code code 
code code code code code code 
code code code code code code 
code code code code code code 

=end %>

2

পূর্ববর্তী উত্তরের কয়েকটি মাত্র একটি সংযোজন। আমি শুরু = = শেষ সমাধানটি সবচেয়ে দরকারী বলে খুঁজে পেয়েছি, তবে সৌন্দর্যের জন্য আমি এটিকে এভাবে লিখছি:

<%
=begin
  <p>HTML will be ignored</p>
  <%= 'and so will ruby' %>
  <p>
    <%= 'plus the whole block will be greyed in editor' %>
  </p>
=end
%>

দ্রষ্টব্য যেহেতু সমস্ত কিছু উপেক্ষা করা অবধি অবধি এই ট্যাগটি =endবন্ধ করার বা ট্যাগটি খোলার প্রয়োজন নেই (যা পূর্বের উত্তরেও নির্দেশ করা হয়েছে)=begin%>=end<%

আমি এটি মিশ্র রুবি এবং এইচটিএমএল কোডের একটি ব্লককে সম্পূর্ণরূপে আউটকমেন্ট করার সর্বাধিক মার্জিত সমাধান বলে মনে করেছি এবং <% if false %>সমাধানটির বিপরীতে এটি আমার সম্পাদকটিতে গ্রাইওড করেছি । শুধুমাত্র ত্রুটিটি এটি =beginএবং এটি =endঅবশ্যই লাইনের একেবারে শুরুতে স্থাপন করা হবে ..


1
আমি এই ত্রুটিটি পাচ্ছি: "এম্বেড করা ডকুমেন্টটি ফাইলের শেষ হয়"
কায়রান অ্যান্ড্রুজ

2

মন্তব্য করা একটি HEREDOC ব্যবহার করুন

পেশাদাররা:

  • স্ব-ব্যাখ্যামূলক যে এটি একটি মন্তব্য
  • Erb এবং এইচটিএমএল ট্যাগের জন্য কাজ করে
  • ঠিক সিনট্যাক্স হাইলাইট হয়েছে (এক দীর্ঘ স্ট্রিং হিসাবে)

কনস:

  • অদ্ভুত 3 লাইন ক্লোজিং সিনট্যাক্স
  • কোনও কীবোর্ড শর্টকাট নেই

কোড:

খোলার ট্যাগ হতে পারে

<% <<-COMMENT %>

the above closing erb tag is just for looks (to match the end),
but don't put anything else there, it may show up on the page

অথবা

<%
<<-COMMENT
%>

এখানে যে কোনও কিছুই চলবে না বা ব্রাউজারে প্রদর্শিত হবে না

<P>
    this will not be displayed in the browser
    <strong> even in the developer's tools </strong>
</p>

<% 1_000_000_000_000.times do |count| %>

for the <%= count %>'th time, this won't run a trillion times,
this is all just a string

all of these %>, <%, <% end %>, end, do, <!--, won't cause any issues.

but the below opening erb tag is important (if you used any erb tags in the comment).
I have no clue why?

সমাপনী ট্যাগ

হ্যাঁ এটি 3 লাইন হওয়া দরকার 😟 ওপেনিং এর্বব ট্যাগটি কেন গুরুত্বপূর্ণ তা আমি জানি না তবে এটি! (যদি না আপনি মন্তব্যে কোনও erb ট্যাগ ব্যবহার না করেন)।

<%      
COMMENT
%>

1

কোডটি কোথায় কার্যকর করা হয় তা আপনাকে মনে রাখতে হবে। রুবি স্টাইলে মন্তব্যগুলি কাজ করে কারণ রুবি কোডটি ওয়েব ব্রাউজারে পরিবেশিত হওয়ার আগে সার্ভারে কার্যকর করা হয়। এটি এইচটিএমএল মন্তব্য কেন কাজ করে না তাও ব্যাখ্যা করে — রুবি ইতিমধ্যে কার্যকর করা হয়েছে।

আপনি যে আইডিই ব্যবহার করছেন সেটি কোডের ব্লকগুলি মন্তব্য করার জন্য কাস্টম ম্যাক্রোগুলি তৈরির সমর্থনটি ব্যবহার করছেন না?


1) আপনি ঠিক বলেছেন, জেএসপি মন্তব্যে কিছুটা আলাদা ফর্ম্যাট রয়েছে, আমি পোস্টটি আপডেট করেছি। 2) আমি আইডিইএ বা নেটবিনের মতো কিছু পাই না। আপনার এই কথাটি মনে রেখে কোনও নির্দিষ্ট আইডিই আছে?
নিকিতা রাইবাক

1
না আমি করিনি। ব্যক্তিগতভাবে, আমি রেল প্রকল্পগুলির জন্য কোনও আইডিই ব্যবহার করি না।
জন টপলি

1

সাবালাইম টেক্সটের ব্লক মন্তব্যের শর্টকাট ctrl+shift+/বিজ্ঞপ্তি দেয় আপনি সাধারণ এইচটিএমএল বা কোনও এর্ব ট্যাগ নির্বাচন করেছেন এবং সে অনুযায়ী <!---বা <% =begin %>সেই অনুযায়ী রেখেছেন কিনা ।


হ্যাঁ, তবে এটি এখনও এইচটিএমএল এবং রুবি উভয়ই সম্পর্কে মন্তব্য করবে না ।
অদম্য

হুম ... কাস্টম প্লাগইনটির জন্য ভাল কারণ বলে মনে হচ্ছে। সম্ভবত স্টপগ্যাপ হিসাবে, আপনি ব্লকের মধ্যে ctrl+dপ্রতিটি আরব ট্যাগের শুরুটি মাল্টি-সিলেক্ট করতে টিপতে পারেন <%এবং তারপরে আঘাত করতে পারেন ctrl+shift+/, তারপরে এইচটিএমএল মন্তব্য করার জন্য পুরো ব্লকের জন্য আরও একবার এটি আঘাত করুন।
আয়নো

1

আপনি একই সাথে <% মিথ্যা%>> এবং এইচটিএমএল মন্তব্য উভয়ই ব্যবহার করতে পারেন:

<%if false%><--

stuff to comment out

--><%end%>

সুবিধাগুলি হ'ল:

  • রুবি কোড কার্যকর করা হয় না

  • মন্তব্য করা ব্লকের আইডিইতে ধূসর বর্ণ রয়েছে

  • উদ্দেশ্য অন্যান্য বিকাশকারীদের জন্য সুস্পষ্ট



0
<% %w(
  <span title="<%= title %>">hello</span>
) %>

আমি আশা করি আমি আপনার মনকে উড়িয়ে দিয়েছি!


-4

এই ব্যাক-ব্রেকিং সমস্যার আমি একমাত্র গ্রহণযোগ্য সমাধানটি খুঁজে পেয়েছি "রুটি কোড হিসাবে আর নিবন্ধভুক্ত না করার জন্য" <% = "এর মধ্যে একটি স্থান রাখা এবং তারপরে এইচটিএমএল মন্তব্যে পুরো ব্লকটি মন্তব্য করা out

এটার মত:

<!--
<p>
  < %= @some_object.some_attribute %>
</p>
<p>
  < %= @some_object.another_attribute %>
</p>
<p>
  < %= @some_object.some_attribute %>
</p>
<p>
  < %= @some_object.some_attribute %>
</p>
-->

হ্যাঁ, স্পেস যোগ করা বিরক্তিকর। তবে আমি এখনও দেখা সমস্ত সমাধানের মধ্যে এটি সর্বনিম্ন বিরক্তিকর।


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