2016-05-23 37 views
0

我在嵌套窗體中使用了simple_form和bootstrap_slider。我如何傳遞設置參數?Simple_form bootstrap_slider參數

我使用這個

<%= f.input_field :proficiency, class: 'agt_prof_slider' %> 

工作正常。這個類被jquery用來更新另一個字段。 我無法做的事情是設置初始值。 Bootstrap_slider希望這樣的:

<input id="ex6" type="text" data-slider-min="-5" data-slider-max="20" data-slider-step="1" data-slider-value="3"> 

怎樣包括f.input_field「數據滑價值」? 這是嵌套部分的一部分,所以我需要自動生成的ID等。我只需要將原始值放入滑塊中,以便表單適用於編輯屏幕。

類 'agt_prof_slider' 是我在我的jQuery的,例如使用,

$('.agt_prof_slider').slider() 

回答

0

答案最終被更多的jQuery。這是我的解決方案。

在原始形式:

<div id="int_skill_container" > 
    <%= f.simple_fields_for :int_skills do |skill| %> 
    <%= render 'int_skill_fields', :f => skill %> 
    <% end %> 
    <%= link_to_add_association "Add a Skill Pair", f, :interpreter_skills, :partial => 'int_skill_fields', :class => 'btn btn-primary' %> 
</div> 

的字段:

<div class='nested-fields'> 
    ... 
    <td> 
    <b><span class="agt_prof_slider_val"><%= f.object.proficiency or 5 %></span></b>&nbsp;&nbsp;&nbsp; 
    <%= f.input_field :proficiency, class: 'agt_prof_slider' %> 
    </td> 
    ... 
</div> 

和jQuery的

mySlider = $('.agt_prof_slider').slider() 
mySlider.each -> 
    init_val = parseInt($(this).closest("td").find('.agt_prof_slider_val').text()) 
    $(this).slider('setValue', init_val) 
$('.agt_prof_slider').on 'slide', (slideEvt) -> 
    $(this).closest("td").find('.agt_prof_slider_val').text slideEvt.value 

$('#int_skill_container').on 'cocoon:after-insert', (e, insertedItem) -> 
    insertedItem.find('.agt_prof_slider').first().slider() 
    insertedItem.find('.agt_prof_slider').first().on 'slide', (slideEvt) -> 
    $(this).closest("td").find('.agt_prof_slider_val').text slideEvt.value 

我顯示滑塊旁邊的值。在編輯表單中,這些值是在初始表單屏幕中設置的,所以我抓住它以使用'setValue'設置初始滑塊值。

jQuery的東西的第二部分是真的一樣,但因爲我使用cocoon嵌套變量,我需要基本上重複在一個繭回調代碼。這裏的默認滑塊值5很好。