Pergunta

Eu estou usando o celular fu gem para fazer algum user-agent de detecção, para que eu possa servir tanto .ou html .extensão móvel modelos dependendo do cliente,

Agora, essa parte funciona muito bem, mas eu não gosto que ver as pastas se tornar um pouco confuso com duas vezes os arquivos, ou seja,.

app/views/profiles/show.mobile.haml

app/views/profiles/show.html.haml

app/views/profiles/edit.mobile.haml

app/views/profiles/edit.html.haml

etc, etc

o que eu gostaria de ter, em vez disso:

app/views/profiles/html/show.html.haml

app/views/profiles/html/edit.html.haml

E

app/views/profiles/mobile/show.mobile.haml

app/views/profiles/mobile/edit.mobile.haml

E tem o Rails automaticamente olhar para o correto pasta/diretório para arquivos dependendo do Pedido.Isso é possível fazer?

Talvez isso é uma coisa muito fácil de fazer, deixe-me saber se este é um comportamento que vem de fora da caixa..

Obrigado

Foi útil?

Solução

Trilhos 4.1 tem um novo recurso interno chamado ActionPack Variantes, que detecta o agente de usuário (como o móvel fu gem).

Basicamente, você pode adicionar, por exemplo, este em sua ApplicationController:

before_action :detect_device_format

private

def detect_device_format
  case request.user_agent
  when /iPad/i
    request.variant = :tablet
  when /iPhone/i
    request.variant = :phone
  when /Android/i && /mobile/i
    request.variant = :phone
  when /Android/i
    request.variant = :tablet
  when /Windows Phone/i
    request.variant = :phone
  end
end

Digamos que você tenha uma ProfilesController.Agora você pode fazer isso:

class ProfilesController < ApplicationController
  def index
    respond_to do |format|
      format.html          # /app/views/profiles/index.html.erb
      format.html.phone    # /app/views/profiles/index.html+phone.erb
      format.html.tablet   # /app/views/profiles/index.html+tablet.erb
    end
  end
end

De volta à sua pergunta:Se você quer procurar por arquivos em uma pasta diferente do diretório/, você pode fazer isso:

format.html.phone { render 'mobile/index' }   # /app/views/mobile/index.html+phone.erb

Há também um bom tutorial o que mostra como usá-lo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top