2012-11-21 18 views
1

Rails 튜토리얼 비디오를 통해 작업하는 총 Rails 멍청한 놈. 나는 마지막 강의에있는 모든 방법이야, 내가 이해하지 못하는 것이있다 :will_paginate 인수에 대한 이해

@users = @user.followed_users.paginate(page: params[:page]) 

특히, I가 추적 아니에요 비트가 paginate(page: params[:page])됩니다. 나는 paginate docs을 보았고 페이징 방법이 3 개의 매개 변수를 취할 수 있음을 알고 있습니다. :page 중 하나입니다. 이 매개 변수는 "현재 페이지"를 의미한다고 생각하지만 will_paginate 문서는 기본값이 1이라고 말합니다.

params[:page]은 기본 제공 Rails params 해시를 의미하는 것으로 알고 있습니다. 즉, 현재 세션 매개 변수를 의미합니다. 권리?

그래서 ... 나는 그것을 얻지 못합니다. 왜 나는 그것을 필요로합니까? :page 기호가 params 해시에 들어가려면 어떻게해야하나요? 이게 실제로 은 무엇입니까?

자세한 내용은 Ruby Tutorial book의 목록 11.30을 참조하십시오. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

3

나는이 경우에 루비 인수가 어떻게 작동하는지 오해하고 있다고 생각합니다. paginate은 실제로 3 개의 인수를 취하지 않지만 대신 3 개의 옵션 (키/값 쌍)이있는 단일 해시 인수를 사용합니다.

Ruby에서 키/값 쌍을 마지막 인수 세트로 전달하면 자동으로 해시로 변환됩니다. 예를 들어, 다음은 동일합니다

paginate({page: 1}) 

은 동일하다 : 그래서 정말

paginate(page: 1) 

당신이 여러 키/값 쌍을이 해시 단일 인수를 통과하고있다 . 이제

특히 귀하의 질문에 대답 :

를 내가 필요한 이유는 무엇입니까?

will_paginate가 현재 어느 페이지에 있는지 알 수 있도록이 값을 전달해야합니다. 초기 페이지로드시 URL에 ?page=x이 없으므로 기본값은 1 페이지입니다. 다른 페이지로 변경하면 URL에서 page 값을 가져 와서 페이지 매김 메소드에 전달합니다.

: 페이지 기호가 params 해시에 들어가는 방식은 무엇입니까?

자동으로 레일에 의해 PARAMS 해시에 전달 얻을 것이다 URL에 검색어 매개 변수의 일부입니다 모든 인수

이 정말 무엇을 하는가 (가능성이 레일 Rack는에 내장되어 있습니다)?

나는 위와 같은 대답을 원하지만, 그렇지 않은 경우보다 구체적인 질문을 제시하기에 충분한 정보를 제공했을 수도 있습니다.

+0

정말 고마워요! 이것은 확실히 도움이됩니다. – ezuk