[Rails] 그룹화 시 페이지 스타일
개시하다
기록 목록을 조합해서 표시할 때, 페이지의 단자가 약간 걸려 넘어지기 때문에, 총괄합니다.
페이지에 카미나리를 사용합니다.
일반 페이지 스타일
예를 들어 모든 사용자를 얻은 후, 일람표에 표시된 10개의 페이지 문자는 다음과 같다.
app/controllers/users_controller.rbdef index
page = params[:page] || 1
@users = User.all.page(page).per(10)
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>ユーザー情報</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td>id:<%= user.id %></td>
<td>name:<%= user.name %></td>
</tr>
</tbody>
<% end %>
</table>
<div class="m_t_30">
<ul><%= paginate(@users) %></ul>
</div>
또한 카미나리에서도 페이지 하이픈으로 배열할 수 있다.
app/controllers/users_controller.rb def index
page = params[:page] || 1
array = []
users = User.all
users.each do |user|
array.push({
id: user.id,
name: user.name
})
end
@paginated_array = Kaminari.paginate_array(array).page(params[:page]).per(10)
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>ユーザー情報</th>
</tr>
</thead>
<tbody>
<% @paginated_array.each do |item| %>
<tr>
<td>id:<%= item[:id] %></td>
<td>name:<%= item[:name] %></td>
</tr>
</tbody>
<% end %>
</table>
<div class="m_t_30">
<ul><%= paginate(@paginated_array) %></ul>
</div>
넘어지는 장면
나는 음반을 조합해서 보여주고 싶을 때의 페이지 스타일을 어떻게 실현해야 할지 모르겠다.
예제
예를 들어 사용자를 목록에 표시할 때, 사용자마다country열의 값에 따라 그룹을 나누어 목록을 표시할 수 있습니다.
이 화면에서 사용자에게 페이지 스타일을 사용하는 데 사용될 것을 구상했다.
app/controllers/users_controller.rbdef index
# 全てのユーザーを取得し、countryカラムの文字コード順に並べ替える
users = User.all.order(country: "DESC").order(id: "ASC")
@users_hash = users.gruop_by {|user| user.country}
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>国別一覧</th>
</tr>
</thead>
<tbody>
<% @users_hash.keys.each do |country| %>
<% users = @users_hash[country] %>
<tr>
<th><%= country %>グループ</th>
</tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
그룹을 나누기 위해 그룹을 진행합니다사용하다
gruop_하면, 만약, 만약...
블록의 계산 결과를 키워드로 하고 원소의 배열을 값으로 해서 해시 값을 되돌릴 수 있습니다.
참조 안내서
방금 세그먼트에 페이지 스타일을 사용할 때, 세그먼트에 모든 사용자가 저장한 데이터를 추가한 해시.
따라서 users.length
와 Kaminari.paginate_array(array).length
의 결과는 일치한다.(페이지당 항목 수는 25로 묵인하여users.length<25시)
그러나 이번 상황은 해시의 키value를 배열된 값으로 계산한다aray[{key1, [value1, value2]},{key2,[value3, value4, value5]}...]
에 놓으면 해시의 키와 같은 수량(수조의 원소수)은 페이지의 연결 문자입니다.
즉
pp/controllers/users_controller.rbdef index
~~
略
array = [{key1, [value1, value2]},{key2,[value3, value4, value5]}...]
@paginated_array = Kaminari.paginate_array(array).page(params[:page]).per(10)
이렇게 하면 키는 반드시 10항 이상이어야만 페이지 연결 문자를 사용하지 않을 수 있다.
이번 경우value는 10항 이상에서 페이지 단자를 하려고 하기 때문에 원하는 출력을 얻을 수 없습니다.
해결책
다음과 같은 설치를 통해 해결되었습니다.
app/controllers/users_controller.rb def index
page = params[:page] || 1
@users = User.all.order(country: "DESC").order(id: "ASC").page(page).per(15)
@users_hash = @users.group_by {|user| user.country}
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>国別一覧</th>
</tr>
</thead>
<tbody>
<% @users_hash.keys.each do |country| %>
<% users = @users_hash[country] %>
<tr>
<th><%= country %>グループ</th>
</tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
<div class="m_t_30">
<ul><%= paginate(@users) %></ul>
</div>
상술한 출력은 다음과 같습니다. 목표로서의 출력을 얻었습니다!
첫 페이지
페이지 2
참고 자료
예를 들어 모든 사용자를 얻은 후, 일람표에 표시된 10개의 페이지 문자는 다음과 같다.
app/controllers/users_controller.rb
def index
page = params[:page] || 1
@users = User.all.page(page).per(10)
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>ユーザー情報</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr>
<td>id:<%= user.id %></td>
<td>name:<%= user.name %></td>
</tr>
</tbody>
<% end %>
</table>
<div class="m_t_30">
<ul><%= paginate(@users) %></ul>
</div>
또한 카미나리에서도 페이지 하이픈으로 배열할 수 있다.app/controllers/users_controller.rb
def index
page = params[:page] || 1
array = []
users = User.all
users.each do |user|
array.push({
id: user.id,
name: user.name
})
end
@paginated_array = Kaminari.paginate_array(array).page(params[:page]).per(10)
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>ユーザー情報</th>
</tr>
</thead>
<tbody>
<% @paginated_array.each do |item| %>
<tr>
<td>id:<%= item[:id] %></td>
<td>name:<%= item[:name] %></td>
</tr>
</tbody>
<% end %>
</table>
<div class="m_t_30">
<ul><%= paginate(@paginated_array) %></ul>
</div>
넘어지는 장면
나는 음반을 조합해서 보여주고 싶을 때의 페이지 스타일을 어떻게 실현해야 할지 모르겠다.
예제
예를 들어 사용자를 목록에 표시할 때, 사용자마다country열의 값에 따라 그룹을 나누어 목록을 표시할 수 있습니다.
이 화면에서 사용자에게 페이지 스타일을 사용하는 데 사용될 것을 구상했다.
app/controllers/users_controller.rbdef index
# 全てのユーザーを取得し、countryカラムの文字コード順に並べ替える
users = User.all.order(country: "DESC").order(id: "ASC")
@users_hash = users.gruop_by {|user| user.country}
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>国別一覧</th>
</tr>
</thead>
<tbody>
<% @users_hash.keys.each do |country| %>
<% users = @users_hash[country] %>
<tr>
<th><%= country %>グループ</th>
</tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
그룹을 나누기 위해 그룹을 진행합니다사용하다
gruop_하면, 만약, 만약...
블록의 계산 결과를 키워드로 하고 원소의 배열을 값으로 해서 해시 값을 되돌릴 수 있습니다.
참조 안내서
방금 세그먼트에 페이지 스타일을 사용할 때, 세그먼트에 모든 사용자가 저장한 데이터를 추가한 해시.
따라서 users.length
와 Kaminari.paginate_array(array).length
의 결과는 일치한다.(페이지당 항목 수는 25로 묵인하여users.length<25시)
그러나 이번 상황은 해시의 키value를 배열된 값으로 계산한다aray[{key1, [value1, value2]},{key2,[value3, value4, value5]}...]
에 놓으면 해시의 키와 같은 수량(수조의 원소수)은 페이지의 연결 문자입니다.
즉
pp/controllers/users_controller.rbdef index
~~
略
array = [{key1, [value1, value2]},{key2,[value3, value4, value5]}...]
@paginated_array = Kaminari.paginate_array(array).page(params[:page]).per(10)
이렇게 하면 키는 반드시 10항 이상이어야만 페이지 연결 문자를 사용하지 않을 수 있다.
이번 경우value는 10항 이상에서 페이지 단자를 하려고 하기 때문에 원하는 출력을 얻을 수 없습니다.
해결책
다음과 같은 설치를 통해 해결되었습니다.
app/controllers/users_controller.rb def index
page = params[:page] || 1
@users = User.all.order(country: "DESC").order(id: "ASC").page(page).per(15)
@users_hash = @users.group_by {|user| user.country}
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>国別一覧</th>
</tr>
</thead>
<tbody>
<% @users_hash.keys.each do |country| %>
<% users = @users_hash[country] %>
<tr>
<th><%= country %>グループ</th>
</tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
<div class="m_t_30">
<ul><%= paginate(@users) %></ul>
</div>
상술한 출력은 다음과 같습니다. 목표로서의 출력을 얻었습니다!
첫 페이지
페이지 2
참고 자료
def index
# 全てのユーザーを取得し、countryカラムの文字コード順に並べ替える
users = User.all.order(country: "DESC").order(id: "ASC")
@users_hash = users.gruop_by {|user| user.country}
end
<table>
<thead>
<tr>
<th>国別一覧</th>
</tr>
</thead>
<tbody>
<% @users_hash.keys.each do |country| %>
<% users = @users_hash[country] %>
<tr>
<th><%= country %>グループ</th>
</tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
def index
~~
略
array = [{key1, [value1, value2]},{key2,[value3, value4, value5]}...]
@paginated_array = Kaminari.paginate_array(array).page(params[:page]).per(10)
다음과 같은 설치를 통해 해결되었습니다.
app/controllers/users_controller.rb
def index
page = params[:page] || 1
@users = User.all.order(country: "DESC").order(id: "ASC").page(page).per(15)
@users_hash = @users.group_by {|user| user.country}
end
app/views/users/index.html.erb<table>
<thead>
<tr>
<th>国別一覧</th>
</tr>
</thead>
<tbody>
<% @users_hash.keys.each do |country| %>
<% users = @users_hash[country] %>
<tr>
<th><%= country %>グループ</th>
</tr>
<% users.each do |user| %>
<tr>
<td><%= user.name %></td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
<div class="m_t_30">
<ul><%= paginate(@users) %></ul>
</div>
상술한 출력은 다음과 같습니다. 목표로서의 출력을 얻었습니다!첫 페이지
페이지 2
참고 자료
Reference
이 문제에 관하여([Rails] 그룹화 시 페이지 스타일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/okmtz/items/4113b525b3fff150945d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)