2011-08-13 3 views
8

Mobile Devices railscast에서 동일한 방법을 사용하여 모바일 브라우저에서 내 사이트의 대체 레이아웃을 제공했습니다.휴대 기기에서 다른 레일 레이아웃, 동일한보기 사용

모바일 브라우저가 감지되면 request.format은 mobile으로 설정되고, 이는 mime 유형으로 정의됩니다. 휴대 기기 용 새 레이아웃을 만들었습니다. 모바일보기 (예 : show.mobile.haml)를 제공하는 경우 모바일보기와 레이아웃이 모두 휴대 기기에서 사용되고 모든 것이 잘 작동합니다.

문제는 완전히 새로운보기를 만들고 싶지 않다는 것입니다. 변경하려는 레이아웃 일뿐입니다. 적절하게 명명 된보기를 만들지 않으면 모바일 레이아웃이 사용되지 않습니다. 따라서 나는 모바일 장치에서 둘 다 변경하거나 변경하지 않을 수 있습니다.

무엇이 여기에 있습니까? 모바일 사용자가있을 때 레이아웃을 교체하려면 어떻게해야합니까?

답변

18

단순히 추가하려면 railscasts에서 mobile_device? 방법을 추가 한 가정하고 application_controller.rb하려면 다음

layout :which_layout 
    def which_layout 
    mobile_device? ? 'mobile' : 'application' 
    end 

하는 응용 프로그램/뷰/레이아웃에 mobile.html.erb 파일을 만들어야합니다

동일한보기를 렌더링하고 싶으므로 request.format 설정에 대해 걱정하지 마십시오.

+0

고마워, 그게 내가 찾고 있었던 바로 그거야. – Kelly

4

저는 항상 요청한 형식을 HTML에서 모바일로 전환하여 규칙에 위배되는 것을 발견했습니다. 이 도구를 완전히 오용하기 때문에 DRY 상태를 유지하는 데 문제가 있다는 것은 당연한 일입니다.

요청한 형식을 전환하는 대신 모바일 장치에서 보낸 요청인지 확인하고 그에 따라 레이아웃을 설정하십시오. Bing, Bang, boom - done. 다른 사람이했기 때문에 관련없는 무언가로 주변을 돌아 다니며 일하러 돌아갈 수는 없습니다.

코드를 게시 하겠지만 tybro0103은 부팅 링크가있는 펀치를 때려 눕 힙니다. 우우!

+1

+1 나를 위해 그것을 설명하기위한 :) – tybro0103

관련 문제