Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 弹性->;轨道;如何在一个服务调用中创建具有多个服务调用的模型?_Ruby On Rails_Apache Flex - Fatal编程技术网

Ruby on 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

我正在开发Flex/Rails应用程序。我有一个带有
的模型,它有很多:通过我试图创建的
关联。我已经让它在普通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]

视图工作正常。问题在于柔性侧。我想你误解了数据输出。好的。祝你好运,希望你能得到一个更好的答案。问题在于柔性侧。我想你误解了数据输出。好的。祝你好运,希望你能得到一个更好的答案。