AJAX日历更新页面导轨4



我正在使用jquery的datepicker显示日历。当用户单击日期时,该页面应在该特定日期呈现有效的信息(在这种情况下为可用座位的表)。

我可以看到我的日期正在随着变化而通过,但是模板从未被渲染。局部如何知道从控制器中获得@schedule?我在做什么错?

查看

<p>
  Date:
  <%= text_field "Date", "", :class => 'datepicker'%>
</p>

JS

$(document).ready(function() {
    if($('.datepicker').length){
      $('.datepicker').datepicker({
        dateFormat: 'yy-mm-dd'
      });
    }
    $('.datepicker').change(function(){
      $.ajax({
        data: {Date: $('.datepicker').val()},
      })
    });
  });

控制器

def show
   return unless @product
   @variants =    
   @product.variants_including_master.active(current_currency).includes([:option_values, 
   :images])
   @product_properties = @product.product_properties.includes(:property)

   @schedule = FlightSchedule.where(:date => params[:Date]).available_slots
   respond_to do |format|
     format.html
     format.js
   end
   referer = request.env['HTTP_REFERER']
   if referer
     begin
       referer_path = URI.parse(request.env['HTTP_REFERER']).path
       # Fix for #2249
     rescue URI::InvalidURIError
       # Do nothing
     else
       if referer_path && referer_path.match(//t/(.*)/)
         @taxon = Spree::Taxon.find_by_permalink($1)
       end
     end
   end
end

JS.ERB

$('#seat_table').html('<%= escape_javascript render("seat_table")%>');

部分

<table>
    <th> Available Times </th>
    <th colspan='5'> Available Seats </th>
    <% @schedule.each do |available| %>
      <tr>
        <td>
          <%= available.time.strftime("%l:00") %>
        </td>
        <% @product.variants_and_option_values.each_with_index do |variant, index| %>
          <td>
            <% if available.seat_available?(available, variant.option_value('seat')) %>
              <%= check_box_tag "variants[#{variant.id}]", "1" %>
              <label for="<%= ['variants', @product.id, variant.id].join('_') %>">
                <span class="variant-description">
                  <%= variant.option_value('seat') %>
                </span>
              </label>
            <% else %>
              <label for="<%= ['variants', @product.id, variant.id].join('_') %>">
                <span class="variant-description">
                  <%= variant.option_value('seat') %>
                </span>
              </label>
            <% end %>
          </td>
        <% end %>
      </tr>
    <% end %>
</table>

日志开始;日期正在通过,称为正确的操作。

    Started GET "/products/flight-simulation?Date=2014-03-31" for 127.0.0.1 at 2014-03-09 14:57:57 -0400
Processing by Spree::ProductsController#show as */*
  Parameters: {"Date"=>"2014-03-31", "id"=>"flight-simulation"}

我立即看到的一件事是您缺少数据类型。

更改

$('.datepicker').change(function(){
      $.ajax({
        data: {Date: $('.datepicker').val()},
      })
    });

to

$('.datepicker').change(function(){
      $.ajax({
        data: {Date: $('.datepicker').val()},
        dataType : 'script'
      })
    });

最新更新