Rails:多步表单上的动态选择不保持选择

2023-12-11

我正在按照瑞安·贝茨 (Ryan Bates) 的要求,为订单下达流程制定多步骤表单多步骤教程 #217它使用会话。第一步,我有两个选择字段:一个用于国家(陆地),一个动态用于运输服务。选择土地后,运输服务将通过 javascript/jQuery 加载到第二个选择字段中,并通过 JS 计算总价。

应用程序/视图/订单/_shipping_step.html.erb

<%= f.collection_select(:land_id, Land.all, :id, :name, {:prompt => "select a country"}, {:id => 'lands_select'}) %>
<%= f.select(:shippingservice_id, options_for_select(@shippingservices.collect { |s| [s.name.titleize, s.id, {'data-price' => s.price}] }, :selected => f.object.shippingservice_id), {:prompt => "select a carrier"}, {:id => "shippingservices_select"}) %>

阿贾克斯脚本

$(document).on("change", "#lands_select", function(event){
  $.ajax({
    url: "/carts/update_shipping/" + event.target.value,
    type: "GET",
  })
});

在多步骤表单的运输详细信息步骤中,我可以选择陆运,相应的运输选项已加载,我可以选择一个。当进行到付款步骤时,我可以下订单并且一切正常,但如果我想从付款步骤返回到订单步骤以更改某些内容,运输服务选择器会显示 land_id = 1 的选项,而土地选择显示选择的国家/地区,例如 id 85。

I added :selected => session[:cart_params]到运输服务选择,但它似乎不起作用。:selected => f.object.shippingservice_id保留优先或标准运输选项,但适用于 Land_id 1。

我怎样才能让它发挥作用?是选择字段还是JS?为什么第二个选择不将所选土地保留在内存中?

先感谢您!

LOG:

Started GET "/orders/new" for 127.0.0.1 at Thu Dec 27 22:08:52 +0100 2018
Processing by OrdersController#new as HTML
  Cart Load (0.3ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (1.4ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.3ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  CACHE (0.0ms)  SELECT `lands`.* FROM `lands` 
  Shippingservice Load (0.6ms)  SELECT `shippingservices`.* FROM `shippingservices` INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` WHERE `lands`.`id` = 1 AND (weightmin <= 50 AND weightmax >= 50 AND heightmin <= 3 AND heightmax >= 3 AND shippingservices.shippingcarrier = ‘1’) AND (lengthmax >= 210 AND widthmax >= 149)
  Product Load (0.3ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` = 3 LIMIT 1
  Hero Load (0.2ms)  SELECT `heros`.* FROM `heros` WHERE `heros`.`id` = 18 LIMIT 1
  Rendered orders/_shipping_step.html.erb (13.7ms)
  Rendered orders/new.html.erb within layouts/application (16.2ms)
  Rendered layouts/_header.html.erb (0.1ms)
  Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 44ms (Views: 23.0ms | ActiveRecord: 3.9ms)

选择运送国家:

Started GET "/carts/update_shipping/85" for 127.0.0.1 at Thu Dec 27 22:09:27 +0100 2018
Processing by CartsController#update_shipping as */*
  Parameters: {"id"=>"85"}
  Cart Load (0.2ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (66.9ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.4ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  Shippingservice Load (0.6ms)  SELECT `shippingservices`.* FROM `shippingservices` INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` WHERE `lands`.`id` = 85 AND (weightmin <= 50 AND weightmax >= 50 AND heightmin <= 3 AND heightmax >= 3 AND shippingservices.shippingcarrier = ‘1’) AND (lengthmax >= 210 AND widthmax >= 149)
  Rendered carts/_shippingservice.html.erb (0.2ms)
  Rendered carts/update_shipping.js.erb (2.9ms)
Completed 200 OK in 87ms (Views: 7.8ms | ActiveRecord: 68.6ms)

进入下一步:

Started POST "/orders" for 127.0.0.1 at Thu Dec 27 22:09:33 +0100 2018
Processing by OrdersController#create as HTML
  Parameters: {"order"=>{"ship_to_last_name"=>”surname”, "ship_to_address"=>”street”, "ship_to_city"=>”city”, "ship_to_postal_code"=>”postcode”, "phone_number"=>”somenumber”, "shippingservice_id"=>"27", "email"=>”[email protected]”, "land_id"=>"85", "ship_to_first_name"=>”firstname”}, "authenticity_token"=>”somestring”, "utf8"=>"✓", "commit"=>"Continue"}
  Cart Load (0.2ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (1.5ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.4ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.2ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  Land Load (0.4ms)  SELECT `lands`.* FROM `lands` WHERE `lands`.`id` = 85 LIMIT 1
  Shippingservice Load (0.3ms)  SELECT `shippingservices`.* FROM `shippingservices` WHERE `shippingservices`.`id` = 27 LIMIT 1
  Product Load (0.3ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` = 3 LIMIT 1
  Hero Load (0.3ms)  SELECT `heros`.* FROM `heros` WHERE `heros`.`id` = 18 LIMIT 1
  Rendered orders/_payment_step.html.erb (7.0ms)
  Rendered orders/new.html.erb within layouts/application (8.9ms)
  Rendered layouts/_header.html.erb (0.1ms)
  Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 39ms (Views: 13.7ms | ActiveRecord: 4.6ms)

返回到运输详细信息步骤:

Started POST "/orders" for 127.0.0.1 at Thu Dec 27 22:09:35 +0100 2018
Processing by OrdersController#create as HTML
  Parameters: {"authenticity_token"=>”somestring”, "utf8"=>"✓", "back_button"=>"Back"}
  Cart Load (0.3ms)  SELECT `carts`.* FROM `carts` WHERE `carts`.`id` = ? LIMIT 1  [["id", 1]]
  Land Load (2.4ms)  SELECT `lands`.* FROM `lands` 
  CartItem Load (0.5ms)  SELECT `cart_items`.* FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.3ms)  SELECT MAX(`cart_items`.`length`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
   (0.4ms)  SELECT MAX(`cart_items`.`width`) AS max_id FROM `cart_items` WHERE `cart_items`.`cart_id` = 1
  CACHE (0.0ms)  SELECT `lands`.* FROM `lands` 
  Shippingservice Load (0.7ms)  SELECT `shippingservices`.* FROM `shippingservices` INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` WHERE `lands`.`id` = 1 AND (weightmin <= 50 AND weightmax >= 50 AND heightmin <= 3 AND heightmax >= 3 AND shippingservices.shippingcarrier = ‘1’) AND (lengthmax >= 210 AND widthmax >= 149)
  Product Load (0.3ms)  SELECT `products`.* FROM `products` WHERE `products`.`id` = 3 LIMIT 1
  Hero Load (0.2ms)  SELECT `heros`.* FROM `heros` WHERE `heros`.`id` = 18 LIMIT 1
  Rendered orders/_shipping_step.html.erb (16.5ms)
  Rendered orders/new.html.erb within layouts/application (18.4ms)
  Rendered layouts/_header.html.erb (0.2ms)
  Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 109ms (Views: 24.0ms | ActiveRecord: 5.1ms)

UPDATE

这是我的部分orders_controller.rb

before_filter :initialize_cart

def new
  session[:order_params] ||= {}
  @order = Order.new(session[:order_params])
  @order.current_step = session[:order_step]
  @shippingservices = @cart.available_shipping_services.joins(:lands).where(:lands => {:id => session[:cart_params]})
end

def create
  session[:order_params].deep_merge!(params[:order]) if params[:order]
  @order = Order.new(session[:order_params])
  @shippingservices = @cart.available_shipping_services.joins(:lands).where(:lands => {:id => session[:cart_params]})
  @order.current_step = session[:order_step]
  if @order.valid?
    if params[:back_button]
      @order.previous_step
    elsif @order.last_step? && params[:commit] == 'Option A'
      …
    elsif @order.last_step? && params[:commit] == 'Option B'
      …
    else
      @order.next_step
    end
    session[:order_step] = @order.current_step
  end
  if @order.new_record?
    render "new"
  else
    # Empty the cart
    @cart.cart_items.destroy_all
    # Reset session
    session[:order_step] = session[:order_params] = nil
  end
end

当我通过 Land.first.id 或 Land.last.id 指定 id 时,查询有效并且后退步骤似乎有效。

使用时session[:order_params] I get ActiveRecord::StatementInvalid in Orders#create但存在正确的 land_id:

Mysql::Error: Unknown column 'id.ship_to_last_name' in 'where clause': SELECT `shippingservices`.* FROM `shippingservices` 
INNER JOIN `zones` ON `zones`.`id` = `shippingservices`.`zone_id` 
INNER JOIN `lands_zones` ON `lands_zones`.`zone_id` = `zones`.`id` 
INNER JOIN `lands` ON `lands`.`id` = `lands_zones`.`land_id` 
WHERE `id`.`ship_to_last_name` = 'Smith' 
AND `id`.`ship_to_address` = 'Somewherestreet' 
AND `id`.`ship_to_city` = 'Nowheretown' 
AND `id`.`ship_to_postal_code` = '99999' 
AND `id`.`phone_number` = 'some number' 
AND `id`.`shippingservice_id` = '34' 
AND `id`.`email` = '[email protected]' 
AND `id`.`land_id` = '85' 
AND `id`.`ship_to_first_name` = 'John' 
AND (weightmin <= 200 AND weightmax >= 200 AND heightmin <= 12 AND heightmax >= 12 AND shippingservices.shippingcarrier = '1') AND (lengthmax >= 210 AND widthmax >= 149)

@shippingservices = @cart.available_shipping_services.joins(:lands).where(:lands => {:id => session[:cart_params]})

这是没有正确使用session[:cart_params]得到land_id以便在通过表单返回时设置订单。我们可以改为使用@order = Order.new(session[:order_params])定义上面一行来抓取@order.land_id并且不必依赖任何会话。

如果订单有可能在没有相应土地的情况下被初始化,我还会添加一个存在检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:多步表单上的动态选择不保持选择 的相关文章

  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • JavaScript eval("{}") 返回行为?

    根据ECMA 262 规范 http www ecma international org publications files ECMA ST Ecma 262 pdf 以下语句返回1 eval 1 eval 1 eval 1 var a
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N
  • 如何从浏览器向服务器发送“页面将关闭”消息?

    我想向每个 html 文档添加一个脚本 JavaScript 该脚本向服务器发送两条消息 页面确实打开了 页面将关闭 此消息包含页面打开的时间 打开消息应在文档加载时 或加载完成时 发送 这是简单的部分 The close message
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • 在 ActiveAdmin 或打印解决方案中动态更改分页

    我是 Activeadmin 和 Rails 的新手 我需要一些帮助 我有一个分页模型 我想允许用户更改分页值或完全禁用它 这样它就可以打印 到打印机 所有记录 或过滤后的记录 我知道我可以在 before filter 中使用 per p
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo

随机推荐

  • EF 4.1 RC:奇怪的级联删除

    我不得不承认 EF 4 1 RC Codefirst DataAnnotations 和 FluentAPI 的功能仍然让我难以抗拒 有时我真的不知道自己在做什么 请参阅以下 POCO public class Country Key pu
  • 当函数运行时写入 easygui 文本框?

    我目前正在使用 easygui 运行脚本来接收用户输入 在命令行中运行的旧脚本只会在命令行中打印用户需要知道的任何内容 但我已将其更改为在需要输入时在新的 easygui 框中输出通知 我想要做的是获得进度 正在运行的函数内的每个操作在完成
  • Next js 嵌套动态路由:通过 getstaticprops 获取数据,并在路由之间共享数据

    我正在尝试构建一个带有嵌套动态路由和路由之间共享数据的 next js 应用程序 文件结构如下所示 pages level1 level1 id js index js level2 level2 id js index js Level2
  • 值更改时不调用 ngOnChange

    我已经设置了plunk 我正在单击按钮和单击时更改对象的 bool 属性ngOnchange应该触发但没有发生 为什么 是否与父组件和子组件之间共享相同的对象引用有关 角度变化检测仅检查对象身份 如果修改对象的内容 Angular 将无法识
  • UWP xaml波纹效果(android效果)动画

    我尝试在 UWP 应用程序中编写 Android 效果 波纹 因此 我在网格内创建了一个 EllipseGeometry 在我的用户控件中 但是当我的 ellipseGeometry 的 RadiusX 和 RadiusY 播放动画时 我的
  • 我有两个按钮:“btn1,btn2”,当我改变btn1 alpha的背景时,btn2会随机改变

    我有两个按钮 btn1 btn2 它们与相同的背景图像一起使用 pic1 png 当我更改第一个按钮的背景时 btn1 in OnTouch事件 代码如下 onTouch Action View v MotionEvent event if
  • 动态可扩展的 JVM 堆栈

    The JVM规范表示 JVM 堆栈可以是固定大小的 也可以是动态扩展的 Xss JVM 选项允许设置固定大小 如果我是对的 不设置此选项就是设置默认值 大约 512 2048k 但是如何告诉 JVM 在需要时动态分配其堆栈 如果我无法设置
  • ember.js 所有值的观察者

    在 Ember js 中 是否有一种好方法添加观察者来观察子类实例上的所有更改Ember Object ie 咖啡脚本 Bat Ember Object extend name null age null hank Bat create n
  • Adobe Flex:无法将 XMLList 转换为 mx.collections.IList

    我的 Flex 应用程序运行一个 php 页面的服务 该页面从我的数据库中提取数据 然后以 XML 格式构建结果 我创建了一个名为的新 XMLListtestList在任何函数之外 然后当结果返回时 它们首先作为包含所有 XML 代码的单个
  • Java内存泄漏

    有人使用Eclipse内存管理器来检测java代码中的内存泄漏吗 有人可以推荐一个查找有关使用内存管理器的信息的好地方吗 我在网上读到一些内容 它建议我需要让程序运行直到崩溃 发生内存不足错误 这将生成崩溃报告 然后使用内存管理器打开这个报
  • 如何在 cx_freeze msi 捆绑包中设置快捷方式工作目录?

    我正在开发一个处理 SQLite3 数据库的 Python 程序 我使用 cx Freeze 将其制作为 MSI 安装文件 由 cx Freeze 生成的 msi 安装文件生成的 Windows 快捷方式不提供快捷方式的工作目录属性 因此
  • 与 IOS 深层链接混淆

    我只是想问这里是否有人知道为 IOS 应用程序创建深层链接的逐步过程 我尝试阅读一些文章 但它没有给我绝对的答案 谢谢 深层链接基本上只是设置应用程序的 url 以便其他应用程序可以使用信息启动它 如果您进行设置以便您的应用程序对某些 UR
  • 从 pandas 数据框中选择特定行

    我只想知道 pandas 中是否有任何函数可以根据数据帧中的索引选择特定行 而无需编写自己的函数 例如 从大型数据框中选择索引为 15 50 的行 我已经写了这个函数 但我想知道是否有快捷方式 def split concat data f
  • 如何将 uint8 转换为字符串

    我想转换uint8串起来 但不知道如何串起来 package main import fmt import strconv func main str Hello fmt Println str 1 101 fmt Println strc
  • R data.table:对文件夹中的所有 .csv 文件使用 fread 跳过每个文件的最后一行

    我有数百个 csv 文件需要使用 fread 读取并保存为一个数据表 每个 csv 的基本结构都是相同的 有需要跳过的标头信息 使用skip 很容易 我很难跳过每个 csv 文件的最后一行 每个 csv 文件都有不同的行数 如果我在 Tes
  • 结合 Interlocked.Increment 和 Interlocked.Exchange

    我希望以原子方式递增静态变量 并同时以无锁方式将新值分配给实例字段 目标是让每个对象在创建时获得唯一的 递增的 id 这样两个对象就不可能获得相同的 id 下面的代码能实现这个目的吗 class MyClass private static
  • 在 Windows 服务中使用 SHFileOperation

    这是可能的 但是在 Windows 服务中使用 SHFileOperation 是否合适 shell32 dll 中的所有这些 SHxxx API 函数似乎都是根据用户级程序编写的 我可以确定 SHFileOperation 永远不会显示
  • DirectoryInfo 对象的 Length 属性

    K test 中存在空目录 New Folder gt a gci K test目录不应具有 Length 属性 让我们检查 bool a PSobject Properties Name match Length False 是的 没有
  • 访问 1x1 matlab 单元格的内容

    我不确定术语 但我已将数据从文本文件读取到 1x1 元胞数组中P 检查时P 它在 1 1 位置列出 从那里我可以双击它 它会打开我真正想要的 142x2 单元格 问题是 我不知道如何通过代码操作这些数据以将 1x1 元胞数组转换为 142x
  • Rails:多步表单上的动态选择不保持选择

    我正在按照瑞安 贝茨 Ryan Bates 的要求 为订单下达流程制定多步骤表单多步骤教程 217它使用会话 第一步 我有两个选择字段 一个用于国家 陆地 一个动态用于运输服务 选择土地后 运输服务将通过 javascript jQuery