Я думаю, что я пытаюсь получить эквивалент PHP print_r()
(печатать для чтения человеком); в настоящее время исходный вывод:
ActiveRecord::Relation:0x10355d1c0
Что мне делать?
Я думаю, что я пытаюсь получить эквивалент PHP print_r()
(печатать для чтения человеком); в настоящее время исходный вывод:
ActiveRecord::Relation:0x10355d1c0
Что мне делать?
Обычно я сначала пытаюсь .inspect
, если это не дает мне то, что я хочу, я переключусь на .to_yaml
.
class User
attr_accessor :name, :age
end
user = User.new
user.name = "John Smith"
user.age = 30
puts user.inspect
#=> #<User:0x423270c @name="John Smith", @age=30>
puts user.to_yaml
#=> --- !ruby/object:User
#=> age: 30
#=> name: John Smith
Надеюсь, что это поможет.
Определите метод to_s в вашей модели. Например
class Person < ActiveRecord::Base
def to_s
"Name:#{self.name} Age:#{self.age} Weight: #{self.weight}"
end
end
Затем, когда вы переходите к печати С#puts, он отображает эту строку с этими переменными.
Я использую жемчужину awesome_print (проект github https://github.com/michaeldv/awesome_print)
Итак, вам просто нужно ввести:
ap @var
В Rails вы можете распечатать результат в представлении с помощью отладки "Помощник ActionView:: Helpers:: DebugHelper
#app/view/controllers/post_controller.rb
def index
@posts = Post.all
end
#app/view/posts/index.html.erb
<%= debug(@posts) %>
#start your server
rails -s
(в браузере)
- !ruby/object:Post
raw_attributes:
id: 2
title: My Second Post
body: Welcome! This is another example post
published_at: '2015-10-19 23:00:43.469520'
created_at: '2015-10-20 00:00:43.470739'
updated_at: '2015-10-20 00:00:43.470739'
attributes: !ruby/object:ActiveRecord::AttributeSet
attributes: !ruby/object:ActiveRecord::LazyAttributeHash
types: &5
id: &2 !ruby/object:ActiveRecord::Type::Integer
precision:
scale:
limit:
range: !ruby/range
begin: -2147483648
end: 2147483648
excl: true
title: &3 !ruby/object:ActiveRecord::Type::String
precision:
scale:
limit:
body: &4 !ruby/object:ActiveRecord::Type::Text
precision:
scale:
limit:
published_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: &1 !ruby/object:ActiveRecord::Type::DateTime
precision:
scale:
limit:
created_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: *1
updated_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
subtype: *1
Вам нужно использовать debug(@var)
. Это точно так же, как "print_r".