Ca a l’air tout con mais j’ai pas mal galéré au final pour transposer mon script Ruby en une app (basique) en Rails.
Mon Controller Users:
class UsersController < ApplicationController def index end def name require 'rubygems' gem 'twitter' require 'twitter' # Récupération de la liste des id à comparer et transformation en Array @query = params[:query] @list = @query.scan(/\w+/) # Tableau des followers en commun @mutual = Twitter.follower_ids(@list[0]) @list.each_with_index { |e,i| @mutual &= Twitter.follower_ids(e) unless i==0} @number = @mutual.length.to_s @realnames = Array.new @mutual.each { |e| @realnames.push(Twitter.user(e).name) } @comparison = @list.join(", ") end end
La méthode index sert à rien, c’est juste pour avoir un View.
Par contre, la méthode name fait tout.
Voici le View index :
<% form_tag :action => 'name' do %> <%= text_field_tag(:query) %> <%= submit_tag "Go!" %> <% end %>
Je crée un form non lié au Model parce que je sauvegarde rien dans la bdd de toute façon. J’ai un champ texte tout con avec comme param :query pour que je puisse l’utiliser dans mon Controller (voir plus haut). En paramètre du form j’ai :action =>; 'name', ça redirige vers l’action name.
Le View name :
<h2><span class="comparison"><%= @comparison %></span> have <span class="number"><%= @number %></span> followers in common :</h2> <% @realnames.each do |e| %> <p><%= e %></p> <% end %>
Pour comprendre ce View il faut voir le Controller (plus haut).
- @query c’est le String que je récupère du text input. C’est du type “bbx iamstark”
- @list c’est ce String transformé en Array du type ['bbx', 'iamstark']
- @mutual c’est le tableau des followers commun. Je l’initialise avec les followers du premier user (ici ‘bbx’)
- après je boucle en comparant les followers de chaque user, et je garde que les éléments en commun
- @realnames ça contient les vrais noms des users, et non plus les id
- @comparison c’est juste un Array transformé en String avec chaque nom séparé par une virgule
Après j’affiche tout dans mon View et ça donne :

Flux RSS