2011-08-17 55 views
0

我想要做的是更改可用於選擇地點的可用列表,基於locality_type選擇的選項。這兩個選擇都在設施/ _form.html.erb上呈現。我在LocalitiesControllerrender:update do | page |嘗試呈現模板「更新」

def index 
@localities = Locality.all(:conditions => {:locality_type => params[:locality_type]}, 
          :order => 'name') 
loc_select_id = params[:element_id] 
render (:update) do |page| 
    localities_options = options_from_collection_for_select(@localities, 'id', 'name') 
    page.replace_html loc_select_id, localities_options 
end 
end 

下面的代碼此方法從address.js叫這樣的:

var locTypeElem = $('select#locality_type'); 
var locElem = $("select[name$='[locality_id]']"); 
var locQuery = '/localities?locality_type=' + locTypeElem.val() 
    + '&element_id=' + locElem.attr('id') 
$.get(locQuery, null, null, 'script'); 

我之前迪迪,但什麼不順心這段時間是我收到以下錯誤消息在我的開發日誌:

ActionView::MissingTemplate (Missing template localities/update, application/update with {:formats=>[:js, "application/ecmascript", "application/x-ecmascript", :html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=>[:ru, :ru], :handlers=>[:builder, :erb]}. Searched in: 
* "D:/Work/Reserv.by/app/views" 
* "D:/Dev_apps/Ruby187/lib/ruby/gems/1.8/gems/kaminari-0.12.4/app/views" 
* "D:/Dev_apps/Ruby187/lib/ruby/gems/1.8/gems/devise-1.4.2/app/views" 
): 
app/controllers/localities_controller.rb:7:in `index' 
+0

什麼版本您正在使用Rails嗎? –

+0

rails 3.1.0.rc5根據寶石名單 – Nox

回答

2

原型和RJS已經從Rails的3.1去除,以一個獨立的寶石prototype-rails。確保將它包含在你的Gemfile中。

+0

謝謝,它修正了錯誤,但替換仍然沒有發生。發送像http:// localhost:3100/localities?locality_type = city&element_id = facility_address_attributes_locality_id'這樣的請求會給我一個請求'Element.update(「facility_address_attributes_locality_id」,「 \ n <選項值= \「1 \」>巴黎「);'但頁面不更改 – Nox

+0

您是否在application.js中包含原型? Rails 3.1默認包含jquery。 –

+0

是的,我確實包括了////要求原型 // =要求prototype_ujs // =需要效果 // =需要拖動 // =需要控制'在prototype-rails中README – Nox

0

好吧,既然原型是過時了,我嘗試了不同的解決方案: LocalitiesController現在返回的數據,而不是腳本:

def index 
@localities = Locality.all(:conditions => {:locality_type => params[:locality_type]}, 
          :order => 'name') 
render :inline => "<%= options_from_collection_for_select(@localities, 'id', 'name') %>" 
end 

此數據由AJAX處理,然後:

function selectLocalitiesByLocalityType() 
{ 
var locTypeElem = $('select#locality_type'); 
var locElem = $("select[name$='[locality_id]']"); 
var locQuery = '/localities?locality_type=' + locTypeElem.val() 
$.ajax({ 
    url: locQuery, 
    method: 'GET', 
    dataType: 'html', 
    success: function(data) { 
     locElem.empty(); 
     locElem.append(data);}, 
    error: function(data) {alert(data);} 
     }); 
return false; 
}