2014-12-20 1 views
-2

컨트롤러의 멤버 목록을 얻으면 @Members가 ActiveRecord 배열로 생각됩니다.Rails4의 바깥 쪽 인덱스로 ActiveRecord 값 가져 오기

member_controller.rb

@members = Member.where(params[:param1]) 

그래서 나는 표시 아래에 쓰기 일반적으로 알고있다. member.html.erb

<% @members.each do |member| %> 
    <%= member.name %> 
<% end %> 

그러나 아래의 경우에, 나는 적어도 루프이 같은 10 번 인덱스 번호를 작성하려합니다.

<% (0..10).each do |idx| %> 
    <%= idx %>: 
    <%= members[idx].name %> 
<% end %> 

하지만 작동하지 않습니다. 멤버를 표시 할 수 없습니다. [idx] .name 어떻게 만들 수 있습니까?

+0

음 .. 이제 질문의 오류가 변경되었습니다. 무슨 뜻인지 설명해주세요. ** 그러나 작동하지 않습니다 **. –

답변

0

여러분 모두 감사는 있지만

+0

원하는대로 작동하는지 확인하십시오. @members 변수의 결과가 nil인지 묻는 중이지만 @members [idx]가 nil인지 묻는 것이 좋습니다. 내 말은 : @ memembers [idx] .nil? ? '': @members [idx] .name –

2

수정은

<% (0..10).each do |idx| %> 
    <%= idx %>: 
    <%= @members[idx].name %> 
<% end %> 

당신은 @를 사용하는 것을 잊었다입니다. members이 아니라 @members이어야합니다. 컨트롤러에 대한 쿼리가 10보다 작 으면 루핑 방식이 중단됩니다. 오류 NoMethodErrorNoMethodError: undefined method name' for nil:NilClass과 같습니다. 당신은 같이 할 수

,

<% @members.each_index do |idx| %> 
    <%= idx %>: 
    <%= @members[idx].name %> 
<% end %> 
+0

예. 이. 투표했습니다. 또한 <10 명의 멤버가 반환 될 경우 OP 코드가 충돌하게됩니다. 선호하는 것은 each_with_index와 함께 한계를 사용할 것입니다 – Humza

+0

@Humza Thanks ... 언급 됨. –

1

당신은 each_with_index을 사용할 수 있습니다 : 당신은 다음 레코드 수를 반환 제한 limit를 사용할 수

<% @members.each_with_index do |member, idx| %> 
    <%= idx %>: 
    <%= member.name %> 
<% end %> 

.

3

왜 each_with_index 메소드를 사용하지 않으시겠습니까?

<% @members.each_with_index do |member, index| %> 
    <%= index %> 
    <%= member.name %> 
<% end %> 

당신이 컨트롤러에 10 개의 레코드 만, 제한 @members을해야하는 경우 :

@members = Member.where(column: params[:column]).limit(10) 

이 도움말을합니까? each_with_index 여기에 더 나은 옵션

+0

결과가 2 인 경우에도 .limit (10)을 사용하더라도 결과 수가 2가 아닌 2를 반환한다는 사실을 오해하고 있습니다. 결과가 10 개가 아닌 것을 알지 못했습니다. – tajihiro

+0

record의 결과가 2라면 2 번만 반복됩니까? 적어도 10 번 루프를 만들고 싶습니다. – tajihiro

+0

이 루프는 @members의 각 구성원마다 한 번 실행됩니다.2 개의 레코드가 있으면 2 번 실행됩니다. 10 번 실행하려면 member.name에 무엇을 표시 하시겠습니까? 그냥 빈 공간이야? 멤버 변수는 nil이됩니다 –

0

가되지는

<% (0..10).each do |idx| %> 
    <%= idx %>: 
    <%= @members[idx].name %> #you forgot '@'here 
<% end %> 

이어야한다. 그것은 일했다!!

<% (0..10).each do |idx| %> 
    <%= idx %>: 
    <%= @members[idx].nil? ? '': @members[idx].name %> 
<% end %>