来自select_tag的自定义数据属性未提交 - Rails 4

时间:2016-05-17 06:55:19

标签: forms ruby-on-rails-4

我在Rails 4应用程序中有一个简单的搜索form_tag。

其中一个选项是select_tag:

<%= select_tag "plottable[plottable_id]", options_for_select(Plottable.all.map{ |plottable| [ plottable, plottable.id, { 'plottbale-type' => plottable.class } ] }), prompt: 'Select one option'%>

正确生成HTML,结果是:

<select name="plottable[plottable_id]" id="plottable_plottable_id">
  <option value="">Select one option</option>
  <option plottable-type="Pool" value="3">Pool1</option>
  <option plottable-type="Pool" value="4">Pool2</option>
  <option plottable-type="Asset" value="33">Asset1</option>
  <option plottable-type="Asset" value="34">Asset2</option>
</select>

提交表单时,不会提交plottable-type。以下是参数:

Parameters: {"utf8"=>"✓", "from_time"=>"", "to_time"=>"", "plottable"=>{"plottable_id"=>"35"}, "commit"=>"Search"}

感谢您的建议。

1 个答案:

答案 0 :(得分:2)

试试这个:

<select name="plottable[plottable_id]" id="plottable_plottable_id">
<option value="">Select one option</option>
  <option plottable-type="Pool" value="3">Pool1</option>
  <option plottable-type="Pool" value="4">Pool2</option>
  <option plottable-type="Asset" value="33">Asset1</option>
  <option plottable-type="Asset" value="34">Asset2</option>
</select>
<input type="hidden" name=plottable[type] value="", id="plottable_plottable_type">


$('#plottable_plottable_id').on('change', function(){
    var type = $('option:selected', this).attr('plottable-type');
  $('#plottable_plottable_type').val(type);
})

您也可以通过rails代码添加隐藏字段标记

<%= hidden_field_tag "plottable[plottable_type]"%>