Зачем использовать <% Q в рельсах 3 - PullRequest
0 голосов
/ 11 января 2012

Я заметил, что все API-интерфейсы rails, по-видимому, используют одно из следующих двух обозначений для слепков кода в файлах erb:

<%Q ... %>
<%= ... %>

Но редко когда упоминается ваниль

<% %>

например, здесь;

http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html

Книга, которую я только что прочитал, не охватывала запись <% Q, поэтому я предполагаю, что она новая.Есть ли какое-либо значение для «Q» или это просто лучшая практика сейчас вместо использования <%? </p>

Ответы [ 3 ]

4 голосов
/ 11 января 2012

<% %> и <%= %> являются характеристиками erb.<% %> используется для встраивания некоторого кода в шаблон, например, он будет использоваться для встраивания оператора if.

<% if @person.age > 18 %>

<%= %> используется для вывода значения в шаблоне, например,

Name: <%= @person.name %>

%Q является особенностью языка Ruby и не является специфичной для Rails.Как пишет Джонерно, он используется для строк в двойных кавычках.например, вместо puts "Say \"Hello\"", где вам нужно экранировать двойные кавычки, вы можете написать puts %Q(Say "Hello")

Однако %Q, который вы видите в некоторых документациях по Rails, кажется, не используетсяэтой рубиновой фишки.Если вы посмотрите на фактический источник form_helper.rb , у него их нет, поэтому я думаю, что это извращение инструмента документации rdoc.


Обновление: Как писал Фредерик, пока я писал выше, похоже, что это ошибка rdoc .

2 голосов
/ 11 января 2012

<% Q в документации является результатом ошибки в используемых инструментах rdoc, см. <a href="http://groups.google.com/group/rubyonrails-docs/browse_thread/thread/bc1ae76aa8179406" rel="nofollow"> эту тему

2 голосов
/ 11 января 2012

<% %> и <%= %> кажутся общим стандартом. Я считаю, что %Q используется для строк в двойных кавычках:

>> %Q(Joe said: "Frank said: "#{what_frank_said}"")
=> "Joe said: "Frank said: "Hello!"""

Найдено по по соответствующей ссылке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...