Ответ 1
Что-то вроде
<% for attribute in @user.attributes.keys %>
<p><%= attribute.humanize %> <%= @user.attributes[attribute].to_s %></p>
<% end %>
мог сделать трюк.
Matt
OK Я уверен, что здесь что-то не хватает, но, пожалуйста, простите меня, я новичок в Rails.
Есть ли способ Rails для отображения всех полей для объекта, а не для указания каждого из них?
В моем шаблоне show.html вместо перехода
<p>Name: <%=h @user.full_name %></p>
<p>Email: <%=h @user.email %></p>
Я просто хочу, чтобы oneliner сделал это, не набирая каждый из 15 или около того полей, которые у меня есть. Его страница администратора так хорошо, если отображаются все поля (id, created_at и т.д.), Если бы это был PHP, мне понадобилось бы около 5 секунд, используя foreach, но я искал (по неправильным причинам) в течение часа без везения.
Спасибо!
Что-то вроде
<% for attribute in @user.attributes.keys %>
<p><%= attribute.humanize %> <%= @user.attributes[attribute].to_s %></p>
<% end %>
мог сделать трюк.
Matt
Я предполагаю, что вы хотите отобразить все атрибуты строки из таблицы базы данных, которая определена как модель ActiveRecord. Вы можете использовать класс column_names (каждая модель ActiveRecord имеет), которая возвращает имена столбцов таблицы в массиве.
<%= User.column_names.collect { |col_name| "#{col_name.capitalize}: <p>#{@user[col_name]}</p>" }.join("\n") %>
<%= debug @user %>
простой способ показать объект... это то, что я обычно использую в любом случае!
@user.attributes.each{|key, value| puts "#{key} : #{value}"}
Это фрагмент, который я использовал для добавления в черный список некоторых атрибутов, которые я не хотел показывать...
контроллер (user_controller.rb)
def show
keys_blacklist = %W(user_id name) #these are the fields to hide
@user_showlist = @user.attributes.except(*keys_blacklist)
end
view (show.html.erb):
<!-- language: ruby --><% for attribute in @user_showlist.keys %>
<b><%= attribute.humanize %></b>
<%= @user.attributes[attribute].to_s %>
<!-- language: ruby --><% end %>
Вместо этого вы можете использовать:
@user_showlist = @user.attributes.slice(*keys_whitelist)
чтобы отобразить список свойств.
Если вы используете haml и хотите прокручивать атрибуты, например, для объекта пользователя в представлении:
- for attribute in @user.attributes.keys
%p
= attribute.humanize
= @user.attributes[attribute].to_s