2013-04-06 2 views
0

У меня есть таблица «тип комнаты», полная значений, я хочу сделать так, чтобы, когда пользователь выбирает тип комнаты из коллекции, выбирает остальную часть формы, (тип # room_roomtype_id: selected), но я понятия не имею, что это за тип, и мои часы поиска были бесполезны, как затем обновить другие поля формы данными из таблицы типа комнаты.Получение записей базы данных на основе выбора пользователя в рельсах

Вот мой код формы:

<%= form_for @room do |f| %> 
     <% if @room.errors.any? %> 
      <div class="error_messages"> 
       <h2>Form is invalid</h2> 
       <ul> 
        <% for message in @room.errors.full_messages %> 
         <li><%= message %></li> 
        <% end %> 
       </ul> 
      </div> 
     <% end %> 

     <p id="roomtypes", data-url="<%= url_for :controller => 'rooms', :action => 'roomtypeupdate' %>"> 
      <%= f.label :roomtype_id, "Room type" %><br /> 
      <%= f.collection_select :roomtype_id, Roomtype.order(:name), :id, :name, include_blank: true %> 
     </p> 
     <p> 
      <%= f.label :number, "Room number" %><br /> 
      <%= f.text_field :number %> 
     </p> 
     <p> 
      <%= f.label :maxcap, "Capacity" %><br /> 
      <%= f.number_field :maxcap %> 
     </p> 
     <p> 
      <%= f.label :size, "Size" %><br /> 
      <%= f.number_field :size %> 
     </p> 
     <p> 
      <%= f.label :description, "Description" %><br /> 
      <%= f.text_area :description %> 
     </p> 
     <p> 
      <%= f.label :singlebeds, "Number of single beds" %><br /> 
      <%= f.number_field :singlebeds %> 
     </p> 
     <p> 
      <%= f.label :bathrooms, "Number of bathrooms" %><br /> 
      <%= f.number_field :bathrooms %> 
     </p> 
     <br /> 

     <p class="button"><%= f.submit %></p> 
    <% end %> 

ответ

0

Что-то, как это должно работать:

$('#room_roomtype_id').on('change', function() { 

    // URL for the sake of example - yours will differ 
    $.get('/rooms/' + this.value + '.json', function (response) { 

    // dummy response for the sake of example 
    response = { 
     "number": "5A", 
     "maxcap": "10" 
    }; 

    $.each(response, function (key, value) { 
     $('[name="room[' + key + ']"]').val(value); 
    }); 
}); 
+0

Большое спасибо! Отлично работает, просто нужно добавить format.json {render: json => @roomtype} в свой контроллер комнат. Еще раз спасибо! –

Смежные вопросы