다소 간단한 문제의 해결책을 찾았지만 좋은 설명을 찾을 수 없었습니다.보기에서 열 필터 옵션을 추가하는 방법 ("레일 방식"으로 수행)
- 형태가 새로운 요소와
- (will_paginate 사용) 기존의 요소의 페이지가 매겨진 목록을 입력 :
내가 현재 가지고있는 (작업)이 포함 된 인덱스이다.
목록의 경우 데이터의 일부분에만 관심이 있으므로 필터 옵션이있는 양식을 추가하려고하는데 양식 콘텐츠를 쿠키로 저장하고 싶습니다. 데이터베이스에 저장된 사용자 개체,하지만 아직 사용자가 없습니다). 내가 알아낼 수없는 것은 쿠키에 저장된 양식에서 값을 가져 오는 방법 (또는 그 반대)과 will_paginated와 함께 사용하는 방법입니다.
첫 번째 단계로 수행하려는 작업은 컨트롤러에 @filter 개체를 만들고이 개체에 대한 필터 양식을 추가하고 인덱스 컨트롤러를 다시 사용하도록 양식 옵션을 설정하는 것입니다. 그러면 params 해시로 전달 된 선택된 필터 매개 변수가 (URL에 표시된) 인덱스 컨트롤러로 연결됩니다. 그러나이 솔루션에는 몇 가지 단점이 있습니다. 먼저 (예 : 새 요소를 생성하여)보기를 변경하자마자 필터가 사라지고 두 번째로 @filter 객체가 쿠키가되어야합니다. 필터
보기-부분 :
이<%= form_for(@filter, :url => {:action => "index"}, :html => {:method => :get}) do |f| %>
<div class="field">
<%= f.label :german %><br />
<%= f.check_box :german %>
</div>
<div class="actions">
<%= f.submit "Filter" %>
</div>
<% end %>
이 컨트롤러 :
def index
@word = Word.new
@filter = Word.new(params[:word])
@words = Word.paginate(:page => params[:page]).order('word')
# ....
아무도 나를 도와 드릴까요 여기
내가 지금까지 가지고있는 코드는? 이러한 기능 (필터링 결과)은 다른 응용 프로그램에서 어떻게 수행됩니까?
"필터"란 데이터베이스의 일부 레코드는 아니지만 모든 레코드를 원한다는 뜻입니까? 처음에, 저는 여러분이 여러분이 컬럼의 일부를 원한다는 것을 의미한다고 생각했습니다. 처음이라면'where' 절을 사용하고 싶습니다. 예를 들어'Word.where ("language =?", params [: language])'와 같이 말입니다. –
예, 레코드를 필터링하고 싶습니다. – theldoria
당신의 힌트가 조금 도움이되었습니다. 이제 체크 박스를 위해 작동하는 다음 줄이 있습니다 :'@words = Word.paginate (: page => params [: page]). order ('word' 독일어 =? ", 매개 변수 [: 단어] [: 독일어]! ="0 ")'. 성명서의 순서가 중요합니까 (예 : 실적)? 내가 이해하는 한, 이것은 사실이 아닙니다. – theldoria