Je travaille sur une application Flex/Rails. J'ai un modèle avec une association has_many :through
que j'essaie de créer. Je l'ai travaillé avec des cases à cocher sur les pages de rails simples, avec l'aide de blogs comme Paul Barry's has-many-through-checkboxes. Maintenant j'essaye d'obtenir que Flex fasse la même chose et ai de la difficulté sur la manière d'envoyer les paramètres de case à cocher équivalents dans l'appel de service de Flex.Flex -> Rails; comment créer un modèle avec has_many dans un appel de service?
Le modèle en cause se présente comme suit:
class PlayerAction < ActiveRecord::Base
belongs_to :player
belongs_to :action_type
has_many :action_cards
has_many :deck_cards, :through => :action_cards
end
Le formulaire sur la page rails est la suivante:
<% form_for PlayerAction.new do |f| %>
<%= f.hidden_field :player_id, {:value => @player.id} %>
<%= f.collection_select(:action_type_id, ActionType.find(:all), :id, :desc) %>
<ul>
<% @player.hand.deck_cards.each do |deck_card| -%>
<li><%= check_box_tag "player_action[deck_card_ids][]", deck_card.id -%><%= deck_card.title %>
<% end -%>
</ul>
<%= f.submit 'Do Action' %>
<% end %>
Cela crée des paramètres qui, dans les rails en rondins, ressemble à ceci:
En utilisant le plugin TamperData sur Firefox, les paramètres ressemblent à ceci:player_action[player_id]=9
player_action[action_type_id]=1
player_action[deck_card_ids][]=87
player_action[deck_card_ids][]=56
commit=Do+Action
et enfin, mon code Flex pour l'appel de service est la suivante. svcAction
est un mx:HTTPService
défini ailleurs. Les travaux de routage et url, je me concentre sur les params ici: Dans le code ci-dessus
svcAction.url = "/player_actions.xml";
var params:Object = new Object();
params['player_action[action_type_id]'] = 1;
params['player_action[player_id]'] = 8;
params['player_action[deck_cards_ids][]'] = 37;
params['player_action[deck_cards_ids][]'] = 19;
svcAction.send(params);
, les player_action[deck_cards_ids][]
parms écrasent les uns des autres, alors qu'un seul est envoyé, avec la valeur 2. J'ai aussi essayé tableaux des ids avec
params['player_action[deck_cards_ids]'] = myIdsArray.toString();
et
params['player_action[deck_cards_ids]'] = "[" + myIdsArray.toString() + "]";
, mais aucun des deux travaillé non plus.
Des suggestions?
La vue fonctionnait bien. Le problème était avec le côté Flex.Je pense que vous avez mal interprété la sortie TamperData. – user26270
Ok. Bonne chance, alors j'espère que vous aurez une meilleure réponse. –