Question

Je codage sur une petite application web en utilisant http://padrinorb.org (haml + lesscss) pour les deux mobile (Android / iPhone / iPad) et les utilisateurs de bureau, et en tant que tel, je veux afficher html / css légèrement différent pour les différents périphériques.

Pour déterminer les différents clients que j'utilise détecter rack mobile qui fonctionne très bien jusqu'à présent.

Pour obtenir la mise en page pour devenir layouts / application.mobile-je utiliser ces aides / emballages pour render

def preferred_extension 
  if request.xhr?
    "js"
  elsif env["X_MOBILE_DEVICE"]
    "mobile"
  else
    "html"
  end 
end 

def preferred_layout 
  if preferred_extension.eql? "html"
    "application"
  else
    "application.#{preferred_extension}"
  end 
end 

def render_preferred filename
  filename = "#{filename}.#{preferred_extension}"
  if request.xhr?
    layout_file = false
  else
    layout_file = "layouts/#{preferred_layout}".to_sym
  end
  render filename, :layout => layout_file
end 

Cependant, cela ne me permet pas quand traiter ... et il partials se sent comme quelqu'un doit avoir une meilleure solution pour cela qu'un simple emballage et rendu partiel dans une aide.

Ce que je veux est de ne pas arroser mes contrôleurs et vues avec le code bizarre juste pour rendre le fichier / partiel correct avec la mise en page correcte.

Je voudrais rendre la découverte de savoir quel fichier à utiliser, et de retomber à filename.haml s'il n'y a pas le nom de fichier. # {} Preferred_extension .haml.

Dans les rails il y a cette chose type mime que j'ai utilisé dans un précédent projet, mais je n'ai rien trouvé similaire pour padrino (sinatra)

Était-ce utile?

La solution

je l'ai résolu par la mise à @_content_type preferred_extension dans un bloc avant à l'intérieur de chaque application / controllers /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top