2013-08-27 24 views
0

表單首先使用js根據選擇的類別填充產品選擇列表。這工作。然後它應該根據在產品選擇框中選擇的產品來切換不同的div。Rails 4應用程序 - JS與Webrick但未在開發模式下使用Passenger/Apache2

coffeescript文件的第一部分工作正常。如果我使用Webrick服務頁面,但不通過Apache2/Passenger,則第二部分工作。我沒有在日誌文件中發現錯誤,也沒有在IE調試器中發現錯誤(是的,正確) - div不顯示。

有沒有人知道爲什麼部分文件一直工作,另一部分只在某些時候工作?

我認爲這可能是一個資產管道問題,但是這兩個功能都不起作用,對吧?我在開發模式下運行。預先感謝您的幫助。

_form.html.erb

<%= form_for(@request) do |f| %> 
     <% if @request.errors.any? %> 
     <div id="error_explanation"> 
      <h2><%= pluralize(@request.errors.count, "error") %> prohibited this request from being saved:</h2> 
      <ul> 
      <% @request.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
      <% end %> 
      </ul> 
     </div> 
     <% end %> 
     <% if current_user %> 
     <% if current_user.analyst %> 
      <div class="field"> 
      <font color="maroon">Check here for an IT Project-Related Request that has already been budgeted and does not require further departmental approvals :</font> <%= f.check_box :project %> 
      </div> 
     <% end %> 
     <% end %> 
     <p></p> 

     <!-- SHOW ONLY CATEGORIES WITH ACTIVE PRODUCTS --> 
     <div class="field" id="category"> 
     <%= f.label :category_id, "Select a Category:" %> 
     <%= f.collection_select(:category_id, Category.sorted, :id, :name, :include_blank => true) %> 
     </div> 

     <!-- BASED ON CATEGORY SELECTED ABOVE, LOAD CORRESPONDING ACTIVE PRODUCTS BELOW --> 
     <div class="field" id="product"> 
     <%= f.label :product_id, "Select a Product/Service:" %> 
     <%= f.grouped_collection_select :product_id, Category.active.sorted, :active_products, :name, :id, :name, include_blank: true %> 
     </div> 

     <!-- BASED ON PRODUCT SELECTED ABOVE, SHOW CORRESPONDING PRODUCT.DESCRIPTION AND CORRESPONDING DIV BELOW IF APPLICABLE --> 

     <div class="field" id="product_description"> 
     <!-- <%#= @request.product.description %> ..... show the product.description of the product selected above --> 
     </div> 

     <div class="field" id="quantity"> 
     <%= f.label :quantity, "Quantity:" %> 
     <%= f.text_field :quantity %> 
     </div> 

     <p></p> 

     <div id="dynamic_portion"> 
       <!--<-- These are the custom DIVS that need to load based on the product_id selected above:--> 

     </div> 



     <!-- ALWAYS SHOW TEXT AREA FOR FURTHER INFO --> 

     <div class="field" id="requestor_note"> 
      <%= f.label :requestor_note, "Please give full details below..." %> 
      <%= f.text_area :requestor_note, :size => "50x6" %> 
     </div> 

     </br><p></p> 
     <div> 
     <%= f.submit "Submit", :name => nil, :class => "btn" %> 
     </div> 
    <% end %> 

requests_controller.rb:

 def refresh_dynamic_content 
     @product = Product.find(params[:product_id]) 
     if @product.id == 8 
      render :partial => 'requests/new_city_employee' ,:layout => false 
     elsif @product.id == 10 
      render :partial => 'requests/exit_employee' ,:layout => false 
     elsif @product.id == 12 or @product.id == 21 
      render :partial => 'requests/change_employee' ,:layout => false 
     end 
     end 

requests.js.coffee

jQuery -> 

#//this handles product population based on category select - this works with Webrick and Phusion/Apache2 

    $('#request_product_id').parent().hide() 
    products = $('#request_product_id').html() 
    emptyOption = $('<option />').attr('value', ''); 
    $('#request_category_id').change -> 
     category = $('#request_category_id :selected').text() 
     options = $(products).filter("optgroup[label='#{category}']").prepend(emptyOption).html() 
     if options 
      $('#request_product_id').html(options) 
      $('#request_product_id').parent().show() 
     else 
      $('#request_product_id').empty() 
      $('#request_product_id').parent().hide() 


#// this should handle <div> toggle based on product select - this works with Webrick, but not Phusion Passenger/Apache2: 

$("#request_product_id").change -> 
    trial = $("#request_product_id option:selected").val() 
    container = $("#dynamic_portion") 
    $.ajax 
    url: "/refresh_content?product_id=" + trial 
    type: "get" 
    dataType: "html" 
    processData: false 
    success: (data) -> 
     container.html data 

更新 - 螢火蟲:

當與Apache /客運運行,我得到這個:

Request URL: 
    http://server/refresh_content?product_id=10 

    Request Method: 
    GET 

    Status Code: 
    HTTP/1.1 404 Not Found 

當的WEBrick運行,我得到這個:

Request URL: 
    http://localhost:3000/refresh_content?product_id=10 

     Request Method: 
     GET 

    Status Code: 
    HTTP/1.1 200 OK 

當運行Apache的,它是從服務器根服務,而不是應用程序根 - ??

url: "/refresh_content?product_id=" + trial 

到:

回答

0

我從改變一個AJAX網址

url: "/requests/refresh_content?product_id=" + trial 

而現在它的工作原理。謝謝,Firebug。

相關問題