2014-08-30 69 views
1

我正在使用Ryan Bates nested_form_for:https://github.com/ryanb/nested_form。对于我的选择陈述,我使用的是精选的:http://harvesthq.github.io/chosen/。当我点击“添加技能”时,我无法使select语句也成为类:'selected-select'。显示一个新的选择字段,但它没有自定义CSS样式。Rails 4 - nested_form和选择选择

为了更清楚起见,原始选择语句正确显示,而我添加的语句没有自定义CSS样式(选择选择)。

<%= nested_form_for(@user) do |f| %>  
    <%= f.fields_for :skills do |builder| %> 
      <%= builder.select :skill, data, {}, {class: 'chosen-select'} %> 
      <%= builder.date_select :expdate, include_blank: true %> 
      <%= builder.link_to_remove "Remove" %> 
    <% end %> 

     <%= f.link_to_add "Add Skill", :skills %> 
<% end %> 

有没有办法让我通过link_to_add函数添加的select语句使用类'selected-select'?

回答

2

我认为你的问题是,当页面加载时,选择的插件会对元素进行更改,一旦加载页面,添加的新元素不会改变,至少您再次调用该函数。我会在添加新元素的click事件中处理调用该函数。事情是这样的:

$('#add-element').on 'click', -> 
    $('.chosen-select').chosen() 

我读nested_form的文件,并在你的情况,我认为是这样的:

$(document).on 'nested:fieldAdded, (event)-> 
    $('.chosen-select').chosen() 

或者说,更像是说,文档

$(document).on 'nested:fieldAdded, (event)-> 
    field = event.field 
    detefield = field.find('.chosen-select') 
    datefield.chosen() 

我认为这有效!

PD:代码js是Coffescript。

PD2:我认为cocoon gem最适合这份工作。

+0

该解决方案确实有效,选定的宝石实际上在页面加载时对元素进行了更改。你发布的最后一个解决方案立即为我工作。我需要刷我的咖啡标记。 – 2014-08-31 07:23:05