Ruby on rails 弹性->;轨道;如何在一个服务调用中创建具有多个服务调用的模型?
我正在开发Flex/Rails应用程序。我有一个带有Ruby on rails 弹性->;轨道;如何在一个服务调用中创建具有多个服务调用的模型?,ruby-on-rails,apache-flex,Ruby On Rails,Apache Flex,我正在开发Flex/Rails应用程序。我有一个带有的模型,它有很多:通过我试图创建的关联。我已经让它在普通rails页面上的复选框中工作,并借助于像这样的博客。现在我正试图让Flex也这么做,但在如何在Flex服务调用中发送等价的复选框parms方面遇到了困难 所涉及的模型如下所示: class PlayerAction < ActiveRecord::Base belongs_to :player belongs_to :action_type has_many :acti
的模型,它有很多:通过我试图创建的关联。我已经让它在普通rails页面上的复选框中工作,并借助于像这样的博客。现在我正试图让Flex也这么做,但在如何在Flex服务调用中发送等价的复选框parms方面遇到了困难
所涉及的模型如下所示:
class PlayerAction < ActiveRecord::Base
belongs_to :player
belongs_to :action_type
has_many :action_cards
has_many :deck_cards, :through => :action_cards
end
Parameters: {"commit"=>"Do Action", "action"=>"create", "controller"=>"player_actions", "player_action"=>{"action_type_id"=>"1", "player_id"=>"9", "deck_card_ids"=>["87", "56"]}}
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
使用Firefox上的TamperData插件,参数如下所示:
class PlayerAction < ActiveRecord::Base
belongs_to :player
belongs_to :action_type
has_many :action_cards
has_many :deck_cards, :through => :action_cards
end
Parameters: {"commit"=>"Do Action", "action"=>"create", "controller"=>"player_actions", "player_action"=>{"action_type_id"=>"1", "player_id"=>"9", "deck_card_ids"=>["87", "56"]}}
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
最后,我的服务调用Flex代码如下所示svaction
是在别处定义的mx:HTTPService
。路由和url工作正常,我在这里主要关注参数:
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);
在上面的代码中,player\u action[deck\u cards\u ids][
parm会相互覆盖,因此只发送一个,并带有第二个值。我还尝试了使用
params['player_action[deck_cards_id]]=myIdsArray.toString()代码>
及
params['player\u action[deck\u cards\u ids]]=“[”+myIdsArray.toString()+“]”代码>
但这两种方法都不管用
有什么建议吗?您提出的问题可能在视图中。与其传回包含player\u action[deck\u card\u ids][]=87
等元素的数组,不如将其设置为player\u action[deck\u card\u ids][87]=true
<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>
-
您发布的问题可能在视图中。与其传回包含player\u action[deck\u card\u ids][]=87
等元素的数组,不如将其设置为player\u action[deck\u card\u ids][87]=true
<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>
-
我从另一个进行更新的服务调用中复制了Flex中params对象的用法(我模仿了Flex-on-Rails手册中的示例)。重新审视一下,我意识到这是一个create,查看了另一个工作的create服务,并最终创建了一个xml请求
以下是正在运行的Flex代码片段:
var request:XML =
<player_action>
<player_id>10</player_id>
<action_type_id>1</action_type_id>
<deck_card_ids>37</deck_card_ids>
<deck_card_ids>103</deck_card_ids>
</player_action>;
svcAction.request = request;
svcAction.send();
<mx:HTTPService id="svcAction" url="/player_actions.xml" contentType="application/xml" method="POST" resultFormat="e4x" result="handleActionResult(event)" />
var请求:XML=
10
1.
37
103
;
svcAction.request=请求;
svaction.send();
起初我认为我需要嵌套在
的父级中的
,但这不起作用。实际上,我使用了绑定变量和其中的花括号来使用我想要的值,但上面是生成的xml。我从另一个进行更新的服务调用中复制了Flex中params对象的用法(我模仿了Flex on Rails手册中的示例)。重新审视一下,我意识到这是一个create,查看了另一个工作的create服务,并最终创建了一个xml请求
以下是正在运行的Flex代码片段:
var request:XML =
<player_action>
<player_id>10</player_id>
<action_type_id>1</action_type_id>
<deck_card_ids>37</deck_card_ids>
<deck_card_ids>103</deck_card_ids>
</player_action>;
svcAction.request = request;
svcAction.send();
<mx:HTTPService id="svcAction" url="/player_actions.xml" contentType="application/xml" method="POST" resultFormat="e4x" result="handleActionResult(event)" />
var请求:XML=
10
1.
37
103
;
svcAction.request=请求;
svaction.send();
起初我认为我需要嵌套在
的父级中的
,但这不起作用。实际上,我使用了绑定变量和方括号来使用我想要的值,但上面是生成的xml。在我看来,最好的选择是更改Rails控制器,以便解析参数中的不同字符串键。也就是说,您现有的控制器可能会工作。尝试使用params[新字符串(“玩家动作[牌组牌组牌组ID][])]=[37,19]代码>在我看来,最好的办法是修改Rails控制器,以便解析参数中的不同字符串键。也就是说,您现有的控制器可能会工作。尝试使用params[新字符串(“玩家动作[牌组牌组牌组ID][])]=[37,19]代码>视图工作正常。问题在于柔性侧。我想你误解了数据输出。好的。祝你好运,希望你能得到一个更好的答案。问题在于柔性侧。我想你误解了数据输出。好的。祝你好运,希望你能得到一个更好的答案。