Rails - 보기에 모든 필드를 표시하는 쉬운 방법
-
06-07-2019 - |
문제
좋아요, 제가 여기서 뭔가를 놓치고 있다고 확신합니다. 하지만 제가 Rails를 처음 접하는 점을 용서해주세요.
Rails에서 객체의 필드를 각각 지정하는 대신 모든 필드를 표시하는 방법이 있나요?
내 show.html 템플릿으로 이동하는 대신
<p>Name: <%=h @user.full_name %></p>
<p>Email: <%=h @user.email %></p>
나는 단지 내가 가지고 있는 15개 정도의 필드를 각각 입력할 필요 없이 이 작업을 수행하기를 원합니다.모든 필드가 표시되면 (id, created_at 등) PHP라면 Foreach를 사용하는 데 약 5 초가 걸리지 만 한 시간 동안 (잘못된 것) 한 시간 동안 GOGLED를 사용하는 경우 (ID, Create_at 등)가 잘 관리자 페이지입니다. 운이 없습니다.
감사해요!
해결책
같은 것
<% for attribute in @user.attributes.keys %>
<p><%= attribute.humanize %> <%= @user.attributes[attribute].to_s %></p>
<% end %>
트릭을 할 수 있습니다.
매트
다른 팁
ActiveRecord 모델로 정의된 데이터베이스 테이블의 행의 모든 속성을 표시하려고 한다고 가정합니다.클래스 메소드를 사용할 수 있습니다 열_이름 (모든 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
보기 (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)
속성의 whilist를 표시하기 위해.
HAML을 사용하고 있고 예를 들어 사용자 객체의 속성을 살펴 보려면 다음과 같습니다.
- for attribute in @user.attributes.keys
%p
= attribute.humanize
= @user.attributes[attribute].to_s