升级的RoR应用程序(2到3.2)奇怪地处理表单输入

时间:2013-11-13 14:11:32

标签: ruby-on-rails ruby

如果我有一个RoR应用程序,我从2升级到3.2,一切都最终得到修复,但我有一些来自form_tag的奇怪行为。

表单代码为:

<%= form_tag '/public/checkem' do %>
   <%= hidden_field "vals", value = picks.draw %>
   <%= hidden_field "val_index", value = xcount %>
   <%= submit_tag picks.draw_date %>
<% end %>

其中picks.draw是一个数组,当执行时会生成:

<form accept-charset="UTF-8" action="/public/checkem" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="ET8OgURJpwvnQ+18lK1xKaFXTBLMuMXVw4AoM/gVEYw=" /></div>
    <input id="vals_6,16,45,54,60,15" name="vals[6,16,45,54,60,15]" type="hidden" />
    <input id="val_index_5" name="val_index[5]" type="hidden" />
    <input name="commit" type="submit" value="10/25/2013" />
</form>

隐藏输入(vals)包含数字数组的想法。然后,此值作为/ public / checkem函数中的数组正确处理,但在此处重新呈现时:

  <span class="elem" style="background-color: #b0b040; color: #000000;"><%=@xpicks[0]%></span>

其中@xpicks [0]是数组的第一个元素

<span class="elem" style="background-color: #b0b040; color: #000000;">{&quot;2</span>

看起来像是哈希的开头。当我查看日志文件时,我看到这一行,它确认在提交表单时数组已更改为哈希:

Processing by PublicController#checkem as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"ET8OgURJpwvnQ+18lK1xKaFXTBLMuMXVw4AoM/gVEYw=", "vals"=>{"2,11,42,64,74,2"=>""}, "val_index"=>{"1"=>""}, "commit"=>"11/05/2013"}

这在版本2中运行良好,但是我无法看到数组作为哈希传递的位置或原因。

1 个答案:

答案 0 :(得分:1)

显然,当使用模型和“form_for”时,会指示使用“hidden_​​field”。如果没有型号,您应该使用“hidden_​​field_tag”