我在使用
的表单中有一个下拉列表<%= f.select(:visitable_id) do %>
<% @visitors.each do |visitor| %>
<%= content_tag(:option, visitor.name, value: visitor.id, data: {:type => visitor.class.name.to_s} ) %>
<% end %>
<% end %>
提交后,我在控制器中获取visitable_id。但我还想收到content_tag中数据值的数据。 :数据:{:type =&gt; visitor.class.name.to_s}
如何访问控制器中的第二个值?任何帮助将不胜感激!
答案 0 :(得分:0)
HTML5数据属性不随表单一起发送。除了输入的名称和价值之外,别的什么也没有。
您可以通过将两个值都传递给一个选项来解决它。
<%= f.select(:visitable_id) do %>
<% @visitors.each do |visitor| %>
<%= content_tag(:option, visitor.name, value: "#{visitor.class.name}=visitor.id") %>
<% end %>
<% end %>
然后您可以通过拆分字符串来解析它们:
klass, id = params[:visitable_id].split('=')
但请确保将klass
的可接受值列入白名单,以避免恶意用户可以查询任何模型的漏洞。