문제

좋아요, 제가 여기서 뭔가를 놓치고 있다고 확신합니다. 하지만 제가 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top