如果有一个我从2升级到3.2的RoR应用程序,最终一切都被修复了,但是我有一些来自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="✓" /><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>其中@ element是数组的第一个元素。
<span class="elem" style="background-color: #b0b040; color: #000000;">{"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中,这一切都很好,但我不知道在哪里,也不知道为什么将数组作为散列传递。
发布于 2013-11-14 20:15:21
显然,当使用模型和"hidden_field“时,使用"form_for”。如果没有模型,应该使用"hidden_field_tag“
https://stackoverflow.com/questions/19955946
复制相似问题