我刚刚开始使用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"]) %>
答案 0 :(得分:1)
您是否添加了:SHIPTOSTATE以允许控制器内的方法?
答案 1 :(得分:0)
当您使用Rails中的约定处理模型时,很少使用select_tag
帮助程序 - 您通常使用select
帮助程序,如下所示:
= f.select :SHIPTOSTATE, %w[AL AK AZ AR ..etc]
如果更改为使用该帮助程序不适合您,那么您需要向我们展示您的控制器,也许还有您的模型架构,以便我们可以看到这里可能出现的其他问题。
答案 2 :(得分:0)
select_tag不知道你要附加哪个对象。您需要提供当前值。您可以通过向options_for_select调用添加第二个参数来实现此目的。
options_for_select([“AL”,“AK”...],“当前状态”)
然后你必须在控制器方法中明确地查看params [:SHIPTOSTATE]。
您可能也在使用form_for。在这种情况下,您可能希望使用类似f.select的内容而不是使用select_tag:
<%= form_for @your_object do |f| %>
# ...
<%= f.select :SHIPTOSTATE, ["AL","AK"...]
# ...
<%= f.submit %>
<% end %>