1

我正在 Rails 3.2.3 中构建一个 Booking 模型,用户可以在其中逐步完成多个表单屏幕的选择。如果表单完全反映了我知道的基础模型,我可以使用 gem(例如 Wicked gem)来构建多步骤表单。我遇到的问题是,在其中一个表单屏幕上有多个用户选项,并且在每个选项中都有来自外部 Web 服务的多个选项。换句话说,在多步骤流程的第 2 步中,表单向用户提供了来自我们数据库的许多费率选项,并且对于每个费率,我们都有来自网络服务的多个附加选项。因此,用户需要从网络服务(单选按钮)中选择一个选项,然后选择他们的选择率。

我不确定最佳实践的地方是,我可以将 Web 服务中的多个选项显示为单选按钮,但是每个选项都有一个哈希值,因此与每个单选按钮相关联。

所以,问题是,我应该尝试将该哈希作为参数传递给表单过程的下一步,还是应该将它变成一个对象并完全传递它或其他东西!

我知道这是一个很长的解释,但我觉得这是这个工作流程设计的一个关键点,我想把它做好。

提前谢谢了,

J。

编辑

再想一想,最初的问题是当每个单选按钮代表许多值而不是说一个 id 时,如何表示一系列单选按钮(在这种情况下,每个单选按钮代表来自外部 Web 服务的值的哈希值)。是否应该将散列变成一个对象,然后通过它来代替 - 沿着这些思路?

4

1 回答 1

1

我想通了。在检查从外部 Web 服务返回的“哈希”时,我注意到日期字段不在引号中,例如

:departs=>Wed, 21 Aug 2013 10:40:00 +0000

而所有其他字段都在引号中。这让我有点怀疑。所以最后我在返回的哈希上使用了 to_json :

response_hash_from_webservice = data.to_json

然后以我使用的形式:

JSON.parse(response_hash_from_webservice).each do |nested_item|
  # Access elements like so
  ... nested_item['company_name'] etc ...
end

但是,我需要将此nested_item 发布到表单的下一步(作为单选按钮),并且它只能通过再次使用 to_json 来工作。

<%= radio_button_tag 'nested_item', nested_item.to_json %>    

然后我可以发布此值或将其放入会话中并在以下表单页面上使用:

require 'json'
hash = JSON.parse session[:nested_item]

然后正常访问这些值:

<%= nested_item['company_name'] %>
于 2013-08-12T22:01:04.977 回答