第二个参数content_tag rails

时间:2017-08-15 15:22:50

标签: ruby-on-rails

我在使用

的表单中有一个下拉列表
<%= 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}

如何访问控制器中的第二个值?任何帮助将不胜感激!

1 个答案:

答案 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的可接受值列入白名单,以避免恶意用户可以查询任何模型的漏洞。