Ruby on rails 已升级的RoR应用程序(2到3.2)处理表单输入的方式很奇怪
如果我有一个RoR应用程序,我从2升级到3.2,所有的东西最终都得到了修复,但我有一些奇怪的行为,从一个form_标签 表格编号为:Ruby on rails 已升级的RoR应用程序(2到3.2)处理表单输入的方式很奇怪,ruby-on-rails,ruby,Ruby On Rails,Ruby,如果我有一个RoR应用程序,我从2升级到3.2,所有的东西最终都得到了修复,但我有一些奇怪的行为,从一个form_标签 表格编号为: <%= form_tag '/public/checkem' do %> <%= hidden_field "vals", value = picks.draw %> <%= hidden_field "val_index", value = xcount %> <%= submit_tag picks.
<%= form_tag '/public/checkem' do %>
<%= hidden_field "vals", value = picks.draw %>
<%= hidden_field "val_index", value = xcount %>
<%= submit_tag picks.draw_date %>
<% end %>
在版本2中,这一切都很好,但我看不出数组作为散列传递的位置或原因。显然,在使用模型和“form\u for”时,会指示使用“hidden\u field”。如果没有模型,则应使用“隐藏字段标记”显然,在使用模型和“表单”时,会指示使用“隐藏字段”。如果没有模型,您应该使用“隐藏字段标记”不确定您想做什么,但这可能会有所帮助
-在输入字段名称的末尾使用[]
,这将导致rails自动将其转换为存储在params[:vals]
中的数组,这样做只会引发一个错误:ActionView::Template::error(object[]命名,但object param和@object var不存在或不响应_param:nil):
,我终于解决了这个问题,但有点麻烦。基本上,我将接受参数的行从@xpicks=params[:vals].to_.split(“,”
替换为@xpicks=params[:vals].to_.split(“”)[1].split(“,”)
,这很有效,但我应该能够正确地传递数组,不是吗?我已经意识到“picks.draw”变量甚至不是数组,它只是一个包含逗号分隔数字的字符串,如“1,2,3,4,5”,这使得隐藏的_字段对其执行这种转换更为奇怪。OK。我想我应该使用“hidden\u field\u tag”而不是“hidden\u field”,这样就可以保留字符串。当需要一个模型和一个表单时,应该使用hidden_字段。不确定您想做什么,但这可能会有所帮助
-在输入字段名称的末尾使用[]
,这将导致rails自动将其转换为存储在params[:vals]
中的数组,这样做只会引发一个错误:ActionView::Template::error(object[]命名,但object param和@object var不存在或不响应_param:nil):
,我终于解决了这个问题,但有点麻烦。基本上,我将接受参数的行从@xpicks=params[:vals].to_.split(“,”
替换为@xpicks=params[:vals].to_.split(“”)[1].split(“,”)
,这很有效,但我应该能够正确地传递数组,不是吗?我已经意识到“picks.draw”变量甚至不是数组,它只是一个包含逗号分隔数字的字符串,如“1,2,3,4,5”,这使得隐藏的_字段对其执行这种转换更为奇怪。OK。我想我应该使用“hidden\u field\u tag”而不是“hidden\u field”,这样就可以保留字符串。当需要模型和表单时,应该使用隐藏的字段。
<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>
<span class="elem" style="background-color: #b0b040; color: #000000;"><%=@xpicks[0]%></span>
<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"}