2017-08-15 15 views
1

我對形式的下拉我使用秒參數content_tag軌

<%= 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中接收數據值的數據。 The:data:{:type => visitor.class.name.to_s}

如何訪問控制器中的第二個值?任何幫助,將不勝感激!

回答

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,以避免該漏洞,惡意用戶可以查詢任何模型。

+0

謝謝!正是我在找什麼! – Mitchell