데이터베이스에서 공지 사항 테이블을 만들었습니다.데이터베이스에서 생성 된 테이블 필터링
데이터베이스의 '유형'열을 기준으로이 표를 카테고리로 필터링하려고합니다.
데이터베이스 테이블에는 공지의 '유형'을 보유하는 열이 있습니다. 유형에 따라 각 공지 사항을 표시하는 테이블 상단에 탭이 있어야합니다.
예 : 회의 탭에는 회의 유형의 모든 공지 사항이 표시되어야합니다. 예측 탭에는 예측 유형의 모든 공지 사항이 포함되어야합니다.
저는 Javascript 또는 Jquery에 대한 경험이 거의 없으며, 내가 어딘지에 가까운 솔루션을 찾을 수 없습니다. 드롭 다운 필터 또는 검색 상자를 원하지 않습니다.
HTML의 show.html.erb
<section id="announcements">
<h2>Recent Announcements</h2>
<ul id="filter">
<li class="current"><a href="#">All</a></li>
<li><a href="#">Meeting</a></li>
<li><a href="#">Forcast</a></li>
</ul>
<%= render "markets/announcements/table" %>
HTML의 _table.html.erb
<% announcements ||= @announcements %>
<% title ||= nil %>
<section id="announcements" class="screen table-screen">
<% if title %>
<h2><%= title %></h2>
<% end %>
<table>
<thead>
<tr>
<th>Title</th>
<th class="sort-column">Date</th>
<th>Type</th>
</tr>
</thead>
<tbody>
<%= render :partial => "markets/announcements/announcement", :collection => announcements, :as => :announcement, :locals => { :display_instrument_code => display_instrument_code } %>
</tbody>
</table>
</section>
HTML의 _announcement.html.erb
다음<tr>
<td><%= link_to(announcement.title.truncate(50), path_for_announcements(announcement)) %></td>
<td class="date-cell"><%= format_time(announcement.time, :format => :announcement) %></td>
<td class="announcement_type"><%= announcement.type %></td>
</tr>
내 현재 자바 스크립트와 CSS . '모두'라고 표시되지만 다른 탭은 필터링하지 않습니다.
자바 스크립트
$(document).ready(function() {
$('ul#filter a').click(function() {
$(this).css('outline','none');
$('ul#filter .current').removeClass('current');
$(this).parent().addClass('current');
var filterVal = $(this).text().toLowerCase().replace(' ','-');
if(filterVal == 'all') {
$('table#announcement_table tr.hidden').fadeIn('slow').removeClass('hidden');
} else {
$('table#announcement_table tr').each(function() {
if(!$(this).hasClass(filterVal)) {
$(this).fadeOut('normal').addClass('hidden');
} else {
$(this).fadeIn('slow').removeClass('hidden');
}
});
}
return false;
});
});
CSS 모든 도움에 미리
ul#filter {
float: left;
font-size: 16px;
list-style: none;
margin-left: 0;
width: 100%;
}
ul#filter li {
border-right: 1px solid #dedede;
float: left;
line-height: 16px;
margin-right: 10px;
padding-right: 10px;
}
ul#filter li:last-child { border-right: none; margin-right: 0; padding-right: 0; }
ul#filter a { color: #999; text-decoration: none; }
ul#filter li.current a, ul#filter a:hover { text-decoration: underline; }
ul#filter li.current a { color: #333; font-weight: bold; }
감사합니다.