![](/img/trans.png)
[英]Angular/JS Express app in infinite routing loop in production mode, works fine in development mode
[英]Rails 4 App - JS works with Webrick but not Passenger/Apache2 in Development Mode
该表单首先使用js根据选择类别填充产品选择列表。 这可行。 然后,应根据在产品选择框中选择的产品来切换不同的div。
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
request.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
更新-Firebug:
使用Apache / Passenger运行时,得到以下信息:
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时,它是从服务器根目录而不是应用程序根目录提供服务的?
我从以下位置更改了ajax网址:
url: "/refresh_content?product_id=" + trial
至:
url: "/requests/refresh_content?product_id=" + trial
现在就可以了。 谢谢你,萤火虫。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.