OK.Так что я так близко.,,и так расстроен.Пожалуйста помоги.Вот два выпадающих списка, которые являются частью продуктов / новой страницы
<p>
<%= f.label :category_id %>:
<%= f.select("category", Category.find(:all).collect {|c|[c.name, c.id]})%>
</p>
<%= observe_field :product_category, :url => {:controller => 'products', :action => 'get_subcategories'}, :update => "subcategory_div" %>
Subcategory: <div id="subcategory_div"></div>
У меня есть код в контроллере продуктов, подобный этому:
def get_subcategories
@subcategories = Subcategory.find_all_by_category_id( params[:id]).sort_by{ |k| k['name'] }
render :partial => "subcategories", :locals => {:subcategories => @subcategories}, :layout => false
end
Это частичное:
<select id="product_subcategory" name="product[subcategory]">
<% for subcategory in subcategories %>
<option value="<%= subcategory.id %>"><%= subcategory.name %></option>
<% end %>
</select>
Когда я нажимаю первый выпадающий список, наблюдение срабатывает, но не отправляет параметр.Я попытался добавить: with => различными способами, но он всегда публикует только localhost: 3000 / products / get_subcategories.Если я перейду непосредственно к URL localhost: 3000 / products / get_subcategories / 1, частичное отображение будет нормальным.Точно так же, если я заменю: url в поле наблюдаем на localhost: 3000 / products / get_subcategories / 1, он будет работать нормально (конечно, не динамически).
Это заголовок, который размещен:
http://localhost:3000/products/get_subcategories
POST /products/get_subcategories HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/javascript, text/html, application/xml, text/xml, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-Requested-With: XMLHttpRequest
X-Prototype-Version: 1.6.0.3
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer:
Content-Length: 69
Cookie: _Customer_Portal_session=BAh7BzoQX2NzcmZfdG9rZW4iMWFmeGFqaXo0T0t3MkJqSG9ONjRDaWpROVdzWDc1K0Jtd1hYZldtcGh5ems9Og9zZXNzaW9uX2lkIiU2M2E3OWNjNDU4NTdhOTQ2ZDgyMGQyOWUyYWM1MGRiOA%3D%3D--c8fc61c71a851b22183015150365b2eb1df0d356
Pragma: no-cache
Cache-Control: no-cache
1&authenticity_token=afxajiz4OKw2BjHoN64CijQ9WsX75%2BBmwXXfWmphyzk%3D
HTTP/1.1 200 OK
Connection: close
Date: Thu, 19 Aug 2010 21:20:23 GMT
Etag: "0799f242edbcaef2390601b55aaa04c2"
Content-Type: text/html; charset=utf-8
X-Runtime: 55
Content-Length: 74
Cache-Control: private, max-age=0, must-revalidate
----------------------------------------------------------
Вот как это выглядит в источнике:
//<![CDATA[
new Form.Element.EventObserver('product_category', function(element, value) {
new Ajax.Updater('subcategory_div', '/products/get_subcategories',{
asynchronous:true,
evalScripts:true,
parameters:value + '&authenticity_token=' + encodeURIComponent('afxajiz4OKw2BjHoN64CijQ9WsX75+BmwXXfWmphyzk=')
})
})
//]]>