2 votes

Comment styliser un flux JSON dans ma vue ?

Mon application rails obtient le résultat suivant JSON s'alimenter à partir de mixcloud et colle les résultats dans ma page d'index

Pour l'instant, lorsque je fais cela, le contenu entier de mon flux est affiché non formaté dans une grosse tache de texte effrayante (sans les crochets JSON).

Je veux seulement afficher des valeurs spécifiques du flux dans la vue.

Desde el l'alimentation en question Disons, pour simplifier, que je souhaite simplement afficher toutes les valeurs dont la clé est "url".

Au cas où je ferais quelque chose de mal, voici mon code :

# podcast controller
def index
  # I'm using a class method to get the feed
  @feed = Podcast.feed
end

# podcast model
def self.feed
  feed = JSON.parse(open("http://api.mixcloud.com/alivefrommaryhill/feed").read)
end

# index.html.haml
.feed
  = @feed

Je ne parviens pas à trouver comment styliser les résultats et afficher uniquement certains éléments du flux. Mon approche est-elle mauvaise ?

2voto

Dave Paroulek Points 6033

Au lieu d'écrire le json directement dans votre vue, vous pourriez peut-être écrire une fonction javascript côté client qui convertit le json en balises html. Par exemple, vous pourriez utiliser jquery comme décrit ici ? Meilleure façon d'afficher des données via JSON en utilisant jQuery

Ou, de la même manière, vous pourriez toujours écrire le json directement dans votre vue, mais l'écrire comme la valeur d'une variable javascript au lieu de l'écrire en html. Vous pourriez ensuite écrire une fonction javascript qui lit et analyse la variable javascript après le chargement de la page, la convertit en html et l'insère dans le DOM. Cette méthode serait similaire à la réponse dans le lien ci-dessus, sauf que vous n'auriez pas à faire une requête ajax, vous pouvez simplement traiter les données puisqu'elles seront déjà disponibles localement dans une variable js.

2voto

AllDayer Points 603

J'ai fait quelque chose de similaire en utilisant HTTParty y Hashie des pierres précieuses.

Cet exemple passe en boucle les 10 premiers résultats :

#controller
def index
  @result = Hashie::Mash.new HTTParty.get("http://api.mixcloud.com/alivefrommaryhill/feed")
end

#index.html
<% @result.data[0..10].each do |e| %>
  <%= e.url %>
  <br/>
<% end %>

Si vous voulez les "petites images", vous devez faire ce qui suit

<% @result.data[0..10].each do |e| %>
  <%= e.from.pictures.small %>
  <br/>
<% end %>

J'espère que cela vous aidera :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X