2014-02-11 46 views
0

在我的Ruby-on-Rails應用程序中,用戶可以填寫他們的郵政編碼和門牌號碼。當他們點擊提交時,其他兩個字段將填寫正確的街道名稱和城市名稱。搜索後刷新頁面的一部分

我希望當我點擊提交按鈕時,Ajax從我的數據庫中檢索正確的街道名和城市,並將其填充到正確的字段中,以便它只刷新頁面的這一部分,而不是整個網頁。

<%= form_tag(zipcodes_path, :method => 'get', action: "/", :id => "zipcodes_search", remote: false) do %> 
<%= text_field_tag 'zipcode', params[:zipcode], placeholder: "Postcode", data: {zipcode: true}, :class => "must_be_filled"%> 
<%= text_field_tag 'house_number', params[:house_number], placeholder: "Huisnummer", :class => "must_be_filled" %> 
<%= submit_tag "Search", :name => nil, :id => "submit_button" %> 

<div id="zipcode_results"> 
    <%= text_field_tag 'street_name', @street_name, :id => "street_name", placeholder: "Straatnaam", readonly: true %> 
    <%= text_field_tag 'city', @city, :id => "city", placeholder: "Woonplaats", readonly: true %> 
</div> 

我可以檢索使用如果需要的話坤的streetname和城市。

我想我需要使用.load()函數,但我剛開始使用ajax,所以我有點迷路。

讓我知道你是否需要更多的代碼或希望知道其他的東西。

+0

你在使用什麼AJAX?所以我可以給你相應的解決方案。哪個庫? –

+0

我正在使用jQuery,謝謝! –

+0

您可以參考這篇文章http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form 如果您有具體問題,我可以幫助你。你可以使用http://jsfiddle.net/來顯示你的代碼,甚至測試你的代碼。 –

回答

0

在阿賈克斯成功函數使用此

$('#divid').html(result); 

這將刷新提到DIV刷新Ajax的成功

0

表單視圖文件試試這個, :

<%= form_tag(zipcodes_path, :method => 'get', :action => '/zipcodes/search', :remote => true) do %> 
<%= text_field_tag 'zipcode', params[:zipcode], placeholder: "Postcode", data: {zipcode: true}, :class => "must_be_filled"%> 
<%= text_field_tag 'house_number', params[:house_number], placeholder: "Huisnummer", :class => "must_be_filled" %> 
<%= submit_tag "Search", :name => nil, :id => "submit_button" %> 

<div id="zipcode_results"> 
<%= text_field_tag 'street_name', @street_name, :id => "street_name", placeholder: "Straatnaam", readonly: true %> 
<%= text_field_tag 'city', @city, :id => "city", placeholder: "Woonplaats", readonly: true %> 
</div> 

注意操作已被更改,並且:remote => true。檢查您的assets/javascripts/application.js文件。應該有串:

//= require jquery 
//= require jquery_ujs 

我想,郵編是資源,因此,請檢查你的config/routes.rb文件文件:

resources :zipcodes do 
    collection do 
    get :search 
    end 
end 
在app /控制器

/zipcodes_controller.rb添加動作:

def search 
    # something magical to find a street name and a city by zipcode and put it into @address var 
    # for example: @address = { :street_name => 'Lake Shore Dr', :city => 'Chicago' } 
    respond_to :js 
end 

創建文件app /視圖/郵編/ search.js.erb,並把旁邊還有JS代碼:

$('#street_name').val('<%= @address[:street_name] %>'); 
$('#city').val('<%= @address[:city] %>'); 

希望它有幫助。