Rails - select_tag 表单助手无法正常工作

Rails - select_tag form helper is not working properly

我最近才开始使用 rails 表单,虽然我已经多次搜索 api 文档,但我一直无法弄清楚如何正确使用它。

基本上,在我的应用程序中,我有一个表格可以手动下订单(送货)。我希望有一个 select 标签来指定要运送到的州。我正在使用一个预先存在的 SQLServer 数据库,我想显示和编辑的列是 :SHIPTOSTATE 。但是,当我去编辑订单实例时,表单总是显示 "AL" 并且更改状态实际上并没有更新我表单中的运输状态。有人可以指出我在这里做错了什么吗?

我的表单的其余部分工作得很好,因为此时表单主要是文本字段。文本字段更新得很好,但 select_tag 仍然很麻烦。

这里是有问题的代码片段:

 <%= select_tag :SHIPTOSTATE, options_for_select(["AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY"]) %>

您是否在控制器内部添加了 :SHIPTOSTATE 以允许方法?

当您处理模型时,使用 Rails 中的约定,您很少会使用 select_tag 助手 - 您通常会使用 select帮手,像这样:

= f.select :SHIPTOSTATE, %w[AL AK AZ AR ..etc]

如果更改为使用该帮助程序对您不起作用,那么您需要向我们展示您的控制器,也许还有您的模型架构,以便我们了解这里可能还有什么问题。

select_tag 它自己并不知道你附加到哪个对象。您需要提供当前值。您可以通过向 options_for_select 调用添加第二个参数来做到这一点。

options_for_select(["AL","AK"...],"Current State")

然后你必须明确地查看控制器方法中的参数[:SHIPTOSTATE]。

您可能也在使用 form_for。在那种情况下,你会想要使用类似 f.select 而根本不使用 select_tag 的东西:

<%= form_for @your_object do |f| %>
  # ...
  <%= f.select :SHIPTOSTATE, ["AL","AK"...]
  # ...

  <%= f.submit %>
<% end %>