Je suis tombé sur ce petit tuto qui explique bien la différence entre text_field et text_field_tag. En fait, plus généralement, il y a 2 types de formulaires :

  • ceux qui sont liés directement à un Model, et permettent d’accéder aux valeur d’un Model. Par exemple pour le Model Post, je peux accéder au :title et au :text
  • ceux qui ne sont pas liés à un Model, et je peux faire ce que je veux avec, et notamment accéder uniquement à des actions du Controller

Pour mon truc sur Twitter, j’ai pas besoin du Model : je sauvegarde rien dans la bdd. Donc il me faut un champ texte “banal” qui fait pas appel au Model. Et là j’utilise text_field_tag :

<%= text_field_tag(:query) %>

Ca me fait un input HTML :

<input id="query" name="query" type="text" />

Le :query que j’ai mis me permet d’accéder à la valeur de cet input (merci Brice) dans mon Controller en utilisant :

params[:query]

Après j’en fais ce que je veux!