2014-09-20 73 views
0

的Rails 4.0 2.0紅寶石,SimpleForm 3.1.0.rc2Rails的形式將不選擇默認值

爲什麼沒有當它在第二個例子中選擇在第一示例中選擇的默認值?這兩個例子都是相同的形式。更重要的是,我想,我該如何解決它?謝謝。

<%= f.input(:location_id, {input_html: {value: @car.location}, collection: Location.all.order("name").collect{|c| [c.name, c.id]}, prompt: "Location?"}) %> 

<select id="car_location_id" class="select optional form-control form-control" value="Rcving" name="car[location_id]"> 
<option value="">Location?</option> 
‌<option value="7">Manager</option> 
‌<option value="9">Rcving</option> 
‌<option value="8">Return</option> 
‌<option value="10">RollBack</option> 
‌<option value="6">Stock</option> 
</select> 

<%= f.input(:ymm_year_id, {input_html: {value: @car.year}, collection: YmmYear.all.order("year desc").collect{|c| [c.year, c.id]}, prompt: "Year?"}) %> 

<select id="car_ymm_year_id" class="select optional form-control form-control" value="2013" name="car[ymm_year_id]"> 
<option value="9">2015</option> 
‌<option value="10">2014</option> 
‌<option value="8" selected="selected">2013</option> 
‌<option value="7">2012</option> 
‌<option value="6">2011</option> 
‌<option value="5">2010</option> 
‌<option value="2">2009</option> 
‌<option value="4">2008</option> 
‌<option value="1">2007</option> 
‌<option value="3">2006</option> 
‌<option value="13">2005</option> 
‌<option value="17">2004</option> 
‌<option value="14">2003</option> 
‌<option value="11">2002</option> 
‌<option value="16">2001</option> 
‌<option value="15">2000</option> 
‌<option value="12">1999</option> 
</select> 

形式爲:

$("select[name='car[ymm_year_id]']").change(function() { 
    // send a GET request to /ymm_makes with the 'year' parameter 
    $.getJSON("/ymm_makes", {year: $(this).val()}, function (data) { 
     var options_html = ['<option value="">Make?</option>']; 
     // iterate over the JSON that we received back; each entry is one 'ymm_make' 
     $.each(data, function (index, make) { 
      if (index = 0) {options_html.push('<option value="">Make?</option>');} 
      // make a new <option> tag for each make and push it into the options_html array 
      options_html.push("<option value='" + make.id + "'>" + make.make + "</option>"); 
     }); 
     // put all our generated <options> tags into the <select> tag 
     $('select#car_ymm_make_id').html(options_html.join('')).prop('disabled', false); 
    }); 
}); 

編輯::改性使用可變的代碼,而ID:

<%= f.input(:location, {collection: Location.all.order("name").collect { |c| [c.name, c.id] }, prompt: "Location?"}) %> 
<select id="car_location" class="select optional form-control form-control" name="car[location]"> 
<option value="7">Manager</option> 
<option value="9">Rcving</option> 
<option value="8">Return</option> 
<option value="10">RollBack</option> 
<option value="6">Stock</option> 
</select> 
+0

有沒有在'@ car.location'上設置的值?我想知道是否從'value'屬性中選擇了默認值? – maxshelley 2014-09-20 19:49:06

+0

@maxshelley。當然,值=「Rcving」實際上是直接從car.location的值生成的。與當年的價值=「2013」​​相同。 – 2014-09-20 23:07:48

+0

你有沒有試過將'selected'選項顯式地傳遞給輸入?即''%= f.input(:location_id,{input_html:{value:@ car.location},collection:Location.all.order(「name」)。collect {| c | [c.name,c.id ]},提示:「Location?」}),選擇:@ car.location%>' – maxshelley 2014-09-21 10:25:54

回答

0

由於位置

<div class="span8"> 
    <%= simple_form_for [:admin, @car], 
         defaults: {label: false}, 
         html: {class: 'form-vertical'}, 
         wrapper: :vertical_form, 
         wrapper_mappings: { 
           check_boxes: :vertical_radio_and_checkboxes, 
           radio_buttons: :vertical_radio_and_checkboxes, 
           file: :vertical_file_input, 
           boolean: :vertical_boolean 
         } do |f| %> 
     <%= f.input(:stock_number, {input_html: {value: @car.stock_number}, disabled: true, autocomplete: :off, placeholder: 'Stock number?'}) %> 
     <%= f.input(:ymm_year_id, {input_html: {value: @car.year}, collection: YmmYear.all.order("year desc").collect{|c| [c.year, c.id]}, prompt: "Year?"}) %> 
     <%= f.input(:ymm_make_id, {input_html: {value: @car.make}, collection: YmmMake.makes(@car.ymm_year_id).collect{|c| [c.make, c.id]}, prompt: "Make?"}) %> 
     <%= f.input(:ymm_model_id, {input_html: {value: @car.model}, collection: YmmModel.models(@car.ymm_make_id).collect{|c| [c.model, c.id]}, prompt: "Model?"}) %> 
     <%= f.association(:color, {input_html: {value: @car.color}, autocomplete: :off, prompt: 'Color?'}) %> 
     <%= f.input(:location_id, {input_html: {value: @car.location}, collection: Location.all.order("name").collect{|c| [c.name, c.id]}, prompt: "Location?"}) %> 
     <div class="col-xs-6 col-sm-3"> 
     <br/> 
     <%= f.button :submit %> 
     <br/><br/> 
     <%= link_to 'Delete Car', admin_car_path(@car), class: 'btn btn-warning', data: {confirm: 'Are you sure?'}, :method => :delete %> 
     </div> 
    <% end %> 
</div> 

實施例的JQuery與形式運行變量是多態的,其他e不是「屬於」汽車協會。因此,價值將不會被設置。爲了讓這種情況發生,我開發一個jQuery上準備搶的價值,這實際上是選擇的ID,並設置值,如下所示火災:

<%= f.input(:location_id, {input_html: {value: @car.location_id}, collection: Location.all.order("name").collect { |c| [c.name, c.id] }, prompt: "Location?"}) %> 

$("select[name='car[location_id]']").ready(function() { 
    // Obtain the value attribute and set val parameter 
    var location = $('#car_location_id').attr("value"); 
    $("#car_location_id").val(location); 
}); 

榮譽給janfoeh領導我這個。 OBTW,我試過這一切都使用位置變量,但選擇需要的ID。