2015-09-14 1 views
0

J'ai un tableau d'objets. J'essaye de la boucler et de produire des résultats à une table. je veux qu'une de mes colonnes de table soit rendue partielle (forme). mais peu importe dans quelle ligne je soumets il m'envoie toujours les locaux de la dernière sortie de la ligne.Ruby on Rails - passant les locals à partiel à l'intérieur de chaque boucle (avec Haml)

Est-ce un comportement normal des rails ou est-ce que je fais quelque chose de mal?

mon avis est:

%table.table.table-hover 
%thead 
    %tr 
    %th User id 
    %th User email 
    %th Account name 
    %th Intercom Conversation 
%tbody 
    - @users.each do |user| 
    %tr 
     %td= user.user_id 
     %td= user.user_email 
     %td= user.account_name 
     %td 
     - if user.intercom_conversation 
      %h4= user.intercom_conversation 
     = link_to('edit', '#', {class: 'edit'}) 
     .conversation_edit 
      = render(partial: 'conversation_form', locals: {user_id: user.user_id, fault_id: @fault.fault_id}) 

mon rendu partiel est:

= form_tag('update_conversation', method: 'get') 
= hidden_field_tag(:fault_id, fault_id) 
= hidden_field_tag(:user_id, user_id) 
yes 
= radio_button_tag(:conversation, 0) 
no 
= radio_button_tag(:conversation, 1) 
ignored 
= radio_button_tag(:conversation, 2) 
= submit_tag('Change') 

je suppose que je devrais dire tout le rendu (dans le navigateur sont corrects et aucune erreur est élevée)

remerciements en avance .

+2

Votre fiche_tag est vide ou avez-vous manqué l'empreinte «do» et l'erreur de copie? En dehors de cela, vous aurez des problèmes ayant plusieurs formes dans les rails en raison de l'identification des champs et des conflits de noms. – BroiSatse

+0

Documentation dit qu'il n'est pas nécessaire de faire un bloc http://apidock.com/rails/ActionView/Helpers/FormTagHelper/form_tag également ma demande a les données: { "UTF8" => "✓", « fault_id "=>" 14420591" , "user_id" => "679511", "commit" => "Modifier", "id" => "update_conversation"} il pense que je ne dispose que d'une ligne – FedeSc

+1

@FedeSc Ce n'est pas obligatoire si vous savez ce que vous faites et si vous désactivez explicitement la fermeture de la balise '

' pour vous. En l'état, il n'y a pas de balise '
' partout. Vous devez utiliser un bloc ou fermer manuellement vos formulaires. – meagar

Répondre

3

Vous générez une série de formulaires vides sans les étiquettes de fermeture. Vous devez passer un bloc à form_tag et indenter le contenu pour qu'il ajoute automatiquement les balises </form> nécessaires.

= form_tag('update_conversation', method: 'get') do 

    = hidden_field_tag(:fault_id, fault_id) 
    = hidden_field_tag(:user_id, user_id) 
    yes 
    = radio_button_tag(:conversation, 0) 
    no 
    = radio_button_tag(:conversation, 1) 
    ignored 
    = radio_button_tag(:conversation, 2) 
    = submit_tag('Change') 
+0

Merci @meagar pour l'explication. – FedeSc