কারাগারে ইআরবিতে <%, <% =, <% # এবং -%> এর মধ্যে পার্থক্য কী?


368

কেউ দয়া করে ERB ফাইলে ব্যবহৃত নিম্নলিখিত অক্ষরগুলির ব্যবহারের বর্ণনা দিতে পারেন:

<%   %>
<%=  %>
<%  -%>
<%#  %>

প্রত্যেকের ব্যবহার কি?


1
আপনি এখানে কিছু দুর্দান্ত উত্তর পেয়েছি। আরও মনে রাখবেন যে হামাল প্রায়শই ERb এর একটি সর্বোত্তম বিকল্প।
মার্নেন লাইবো-কোসার

1
হ্যাঁ, ERb
সিমো


@ সিরো সান্তিল্লি: বয়স সত্ত্বেও, এটি আপনার উল্লেখগুলির চেয়ে আরও সম্পূর্ণ বলে মনে হচ্ছে। আমি তাদের এই দু'দিক হিসাবে বন্ধ করতে ভোট দিচ্ছি ..
ব্র্যাড ওয়ার্থ

<%= %>এবং <%= -%>পৃথক পৃথক: কেবলমাত্র পরেরটি হোয়াইটস্পেসগুলি অনুসরণ করে s
মায়াবাদবাদী

উত্তর:


476
<% %>

বন্ধনীগুলির মধ্যে রুবি কোডটি কার্যকর করে।

<%= %>

কিছু ফাইল প্রিন্ট করে b

<% -%>

অভিব্যক্তি পরে লাইন বিরতি এড়ানো।

<%# %>

বন্ধনী মধ্যে কোড আউট মন্তব্য; ক্লায়েন্টকে প্রেরণ করা হয়নি (HTML মন্তব্যের বিপরীতে) to

পরিদর্শন রুবি ডক ERB সম্পর্কে আরো infos জন্য।


17
আমি কোডটিতে কোথাও এই বৈকল্পিকের সাথে দেখা করেছি << ==%> কেউ কি জানেন এটি কী?
Okliv

38
দ্বিগুণ সমান মানে কাঁচা হিসাবে স্ট্রিং এড়ানোর নয়।
রিচার্ড_জি

7
রেলগুলি স্টাডলিব ইআরবি ব্যবহার করে না: এটি ইরুবিস ব্যবহার করে: github.com/rails/rails/issues/16766#issuecomment-54148778
Ciro Santilli 冠状 冠状 病 六四 事件 法轮功

3
তবে ... তবে ... <%#তার ঠিক পরে <%রুবি মন্তব্যে একটি সাধারণ #বিষয় .... হ্যাঁ, এটি বিশেষ কিছু মনে করে মজা পাওয়া যায়, তবে এটি একটি বিশেষ সিনট্যাকটিক নির্মাণের চেয়ে কেবল একটি ইআরবি আইডিয়ম নয়?
বালিনকিংঅফমুরিয়া

6
@QPaysTaxes দুঃখিত যে সম্পর্কে, তুমি ডান ... উদাহরণস্বরূপ, যদি আপনি একাধিক লাইন ERB আছে <%...%>, <%#...%>বাইরে মন্তব্য সব এটা, যদি এটি ছিল শুধু একটি স্বাভাবিক মন্তব্য (যা করতাম না অর্থাত এটি শুধুমাত্র আউট লাইন মন্তব্য করবে এটা চালু).
বালিনকিংঅফমোরিয়া পুনরায় ইনস্টল করুন সিএমগণ

86

<% %>এবং <%- and -%>কোনও রুবি কোডের জন্য, তবে ফলাফলগুলি আউটপুট দেয় না (উদাহরণস্বরূপ যদি বিবৃতি হয়)। দুটি একই।

<%= %> রুবি কোডের ফলাফল আউটপুট দেওয়ার জন্য

<%# %> এটি একটি ইআরবি মন্তব্য

এখানে একটি ভাল গাইড: http://api.rubyonrails.org/classes/ActionView/Base.html


আমি দেখতে পাচ্ছি না যে উদ্বোধনী <%-হোয়াইটস্পেসের শীর্ষস্থানীয় হওয়ার জন্য কিছু করে এবং আমি এটি কোথাও নথিভুক্ত দেখতে পাচ্ছি না। আপনি কি এ ব্যাপারে নিশ্চিত? হতে পারে এটি ইআরবির ভিন্ন স্বাদ। Stdlib ডক্সে এর জন্য কোনও বিকল্প দেখানো হয়নি।
অ্যান্ড্রু ভিট

1
@ অ্যান্ড্রুভিট - এই উত্তরে রেফারেন্স করা পৃষ্ঠা থেকে (অ্যাকশনভিউ :: বেস ডক্স পৃষ্ঠা): "<% - এবং -%> শীর্ষস্থানীয় নিউলাইন সহ শীর্ষস্থানীয় এবং অনুগামী শ্বেত স্পেসকে দমন করুন এবং <% এবং%> এর সাথে আন্তঃবিন্যভাবে ব্যবহার করা যেতে পারে। "
আর্ল জেনকিন্স

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

51

রেয়েলগুলি ডিফল্টরূপে stdlib এর ERB ব্যবহার করে না , এটি ইরুবিস ব্যবহার করে । উত্স: এই দেবের মন্তব্য , অ্যাকশনভিউর রত্নপেক , মার্জ করার অনুরোধটি গ্রহণ করার সময় আমি করেছি

সেখানে হয় কিভাবে হাইফেন অপারেটর তাদের মধ্যে আচরণ পার্থক্য, বিশেষ করে %-এবং -%হবে।

ডকুমেন্টেশন অপ্রতুল, রুবির ERB ফর্ম্যাট "অফিসিয়ালি" সংজ্ঞায়িত কোথায়? সুতরাং এরপরে যা যা ঘটছে তা অনুভবযোগ্য সিদ্ধান্ত।

সমস্ত পরীক্ষা অনুমান:

require 'erb'
require 'erubis'

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

  • ইআরবি: এটি ব্যবহারের বিকল্পটি আপনাকে অবশ্যই পাস -করতে হবে।trim_modeERB.new
  • erubis: ডিফল্টরূপে সক্ষম করা হয়েছে।

উদাহরণ:

begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end
ERB.new("<%= 'a' -%>\nb"  , nil, '-') .result == 'ab'  or raise
Erubis::Eruby.new("<%= 'a' -%>  \n b").result == 'a b' or raise

কি -%করে:

  • ইআরবি: এটি যদি নতুন লাইন হয় তবে পরবর্তী অক্ষরটি সরিয়ে ফেলুন।

  • erubis:

    • ইন <% %>(ব্যতীত =), -অকেজো কারণ <% %>এবং <% -%>একই রকম। <% %>বর্তমান লাইনটি সরিয়ে দেয় যদি এতে কেবল শ্বেতস্পেস থাকে এবং অন্যথায় কিছু না করে।

    • মধ্যে <%= -%>(সঙ্গে =):

      • পুরো লাইনটি সরান যদি এতে কেবল শ্বেতস্থান থাকে
      • অন্যথায়, যদি ট্যাগের আগে কোনও ফাঁকা স্থান না থাকে এবং কেবল পরে সাদা অংশ থাকে তবে পরে আসা শ্বেতস্থানগুলি সরান
      • অন্যথায়, ট্যাগ পরে একটি ফাঁকা স্থান আছে: কিছুই করবেন না

উদাহরণ:

# Remove
ERB.new("a \nb <% 0 -%>\n c", nil, '-').result == "a \nb  c" or raise

# Don't do anything: not followed by newline, but by space:
ERB.new("a\n<% 0 -%> \nc", nil, '-').result == "a\nb \nc" or raise

# Remove the current line because only whitesapaces:
Erubis::Eruby.new(" <% 0 %> \nb").result == 'b' or raise

# Same as above, thus useless because longer.
Erubis::Eruby.new(" <% 0 -%> \nb").result == 'b' or raise

# Don't do anything because line not empty.
Erubis::Eruby.new("a <% 0 %> \nb").result == "a  \nb" or raise
Erubis::Eruby.new(" <% 0 %> a\nb").result == "  a\nb" or raise
Erubis::Eruby.new(" <% 0 -%> a\nb").result == "  a\nb" or raise

# Don't remove the current line because of `=`:
Erubis::Eruby.new(" <%= 0 %> \nb").result == " 0 \nb" or raise

# Remove the current line even with `=`:
Erubis::Eruby.new(" <%= 0 -%> \nb").result == " 0b"   or raise

# Remove forward only because of `-` and non space before:
Erubis::Eruby.new("a <%= 0 -%> \nb").result == "a 0b"   or raise

# Don't do anything because non-whitespace forward:
Erubis::Eruby.new(" <%= 0 -%> a\nb").result == " 0 a\nb"   or raise

কি %-করে:

  • ইআরবি: ট্যাগের আগে এবং পূর্ববর্তী নিউলাইনগুলির পরে শ্বেতস্পেসগুলি সরিয়ে ফেলুন, তবে কেবল সেখানে কেবল শ্বেতস্থান থাকলে।

  • ইরুবিস: অকেজো কারণ এটি (ব্যতীত ) <%- %>একই , এবং <% %>এটি =ব্যবহার করা যায় না =যা কেবলমাত্র কার্যকর যেখানে কার্যকর -%হতে পারে is সুতরাং এটি কখনও ব্যবহার করবেন না।

উদাহরণ:

# Remove
ERB.new("a \n  <%- 0 %> b\n c", nil, '-').result == "a \n b\n c" or raise

# b is not whitespace: do nothing:
ERB.new("a \nb  <%- 0 %> c\n d", nil, '-').result == "a \nb   c\n d" or raise

কি %-এবং -%একসাথে করবেন

পৃথকভাবে উভয় প্রভাবের সঠিক সংমিশ্রণ।


1
দ্বিতীয় লাইনে আপনি লিখেছেন যে রেলগুলি ইরুবিসের সাথে সংযোগের সময় অল্প ব্যবহার করে।
ড্যানিয়েল জোনসন

1
@ ড্যানিয়েল জনসন এই প্রতিবেদনের জন্য ধন্যবাদ: এটি ইরুবিস বোঝানো হয়েছিল। অনেকগুলি সংস্করণ সহ বাদাম চলছে। আপডেট করা হয়েছে।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

10
  • <% %> : রুবি কোড কার্যকর করে
  • <%= %>: Erb ফাইলের মধ্যে মুদ্রণ। বা ব্রাউজার
  • <% -%> : এক্সপ্রেশন পরে লাইন বিরতি এড়ানো।
  • <%# %> : ERB মন্তব্য

7

<%%অস্পষ্টতার কারণে আমি এর উত্তর হিসাবে আক্ষরিক ট্যাগ ডিলিমিটার যুক্ত করেছি । এটি এর্বকে জানাবে <%যে ট্যাগের অংশটি ব্যাখ্যা না করা যা জেএস অ্যাপ্লিকেশনগুলির জন্য যেমন চার্ট.জেএস টুলটিপস প্রদর্শন ইত্যাদি প্রয়োজনীয় for

আপডেট (স্থির ভাঙা লিঙ্ক)

ইআরবি সম্পর্কে সমস্ত কিছু এখন এখানে পাওয়া যাবে: https://puppet.com/docs/puppet/5.3/lang_template_erb.html#tags


1
এই লিঙ্কটি ওপিকে সঠিকভাবে উত্তর দেয়
বেন টিনসলে

লিঙ্কটি এখন ভেঙে গেছে
Andreofthecape 10

নতুন লিঙ্কের সাথে আপডেট!
bkunzi01

3

এগুলি রেলপথে রুবিতে ব্যবহৃত হয় : -

<%%>: -

<%%> ট্যাগগুলি রুবি কোড কার্যকর করতে ব্যবহৃত হয় যা শর্ত, লুপ বা ব্লকগুলির মতো কোনও কিছুই ফেরায় না। যেমন: -

<h1>Names of all the people</h1>
<% @people.each do |person| %>
  Name: <%= person.name %><br>
<% end %>

<% =%>: -

বিষয়বস্তু প্রদর্শন করতে ব্যবহার করুন।

Name: <%= person.name %><br>

<% -%>: -

রেলগুলি ERB প্রসারিত করে, যাতে আপনি সহজেই রেল টেম্পলেটগুলিতে ট্যাগগুলিতে একটি অনুগামী হাইফেন যুক্ত করে নতুন লাইনটি দমন করতে পারেন

<% #%>: -

কোড মন্তব্য

<%# WRONG %>
Hi, Mr. <% puts "Frodo" %>

1

<% %>সেখানে কোডটি কার্যকর করে তবে ফলাফল মুদ্রণ করে না, উদাহরণস্বরূপ:
আমরা এটি আরবি ফাইলের মধ্যে অন্য কোনও ক্ষেত্রে ব্যবহার করতে পারি।

<% temp = 1 %>
<% if temp == 1%>
  temp is 1
<% else %>
  temp is not 1
<%end%>  

ছাপবে temp is 1


<%= %>কোডটি কার্যকর করে এবং আউটপুট প্রিন্ট করে, উদাহরণস্বরূপ:
আমরা একটি রেল ভেরিয়েবলের মান মুদ্রণ করতে পারি।

<% temp = 1 %>
<%= temp %>  

ছাপবে 1


<% -%>এটি কোনও প্রিন্ট না করায় এটি কোনও -%>তাত্পর্যপূর্ণ নয়, কেবল এটি দিয়ে বোঝায় <%= -%>, এটি একটি নতুন লাইন এড়াবে।


<%# %> এর মধ্যে লিখিত কোডটি মন্তব্য করবে।

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