Разница между р в рельсах и ставках - PullRequest
6 голосов
/ 01 декабря 2010

Я новичок в Rails. Я создал контроллер и действие. В соответствующем представлении я использовал <% = помещает «asd»%> один раз, а <% = p «asd»%> - в другой раз.

В случае, если id выводит его на консоль, а в случае p он отображается как HTML. Какова возможная причина?

Ответы [ 3 ]

11 голосов
/ 01 декабря 2010

puts вызывает метод to_s p вызывает метод inspect

class Foo
  def to_s
    "In #to_s"
  end
  def inspect
    "In #inspect"
  def
def

Семантически, to_s предназначен для вывода представления объекта пользователю и проверки на подсказкуо внутренних свойствах объекта (вроде как в Python repr), но это просто соглашение.

Если вы хотите проверить что-то в своем HTML , используйте <%= debug "something" %>

3 голосов
/ 01 декабря 2010

Я думаю, вы обнаружите, что метод p также выводит данные на консоль, но причина, по которой он "отображается как HTML", заключается в том, что метод p возвращает переданное значение, а puts - нет.

p является более короткой версией puts something.inspect и очень полезна для отладки, и это все. Для вывода строк на консоль предпочтительнее использовать puts.

1 голос
/ 01 декабря 2010

Не совсем относится к вопросу, но я рекомендую использовать awesome_print ("ap" против "p")

https://github.com/michaeldv/awesome_print

Он имеет поддержку представлений как плагин Rails, но я в основном использую его для консоли.

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