2017-06-08 44 views
0

我試圖使用select_tag來查找客戶ID,然後將其發送給控制器以呈現顯示頁面。Rails - 使用jquery從控制器中獲取頁面視圖

<%= select_tag("cust_id", options_from_collection_for_select(@customers.by_last_name, :id, :last_name, (@customers_id.nil?) ? nil : @customers_id), {:class => 'custTag'}) %> 

$(document).ready 
$(document).on('change', '.custTag', function(){ 

    var custId = $(this).val(); 
    alert (custId); 
    $.get('/customers/custId'); 

}); 

我有兩個問題jQuery代碼:

  1. 雖然警報顯示與記錄相關聯的客戶ID(CUSTID),服務器與消息響應 - ActiveRecord::RecordNotFound (Couldn't find Customer with 'id'=custId)
  2. 如果我把代碼直接放在代碼中($.get('/customers/6559');)控制器迴應Processing by CustomersController#show as '*/*'

,並沒有什麼渲染 - 服務器確實接收到輸入的ID,並似乎在處理請求,就好像我已經在瀏覽器地址欄中

我道歉,直接輸入要求提前爲我的無知 - 我對這個過程很陌生。

回答

0

兩個問題值得兩個答案。

1)Rails路由具有URL參數,意思是/customers/:id,其中:id是參數。您已選擇並且JQuery代碼正常,因爲您已經確認了自己的身份,但是您需要將custId添加到$.get中的字符串中以發送實際ID。

您目前的要求是/customers/custId所以它試圖找到ID = custId ...

$.get('/customers/' + custId); 

2)AJAX需要處理,否則什麼也不會發生。你的請求被髮送,響應發送回你的JS,然後沒有什麼是因爲沒有定義。

你想要發生什麼?你有沒有嘗試通過HTML來代替JS?

我說你想要的是在頁面重新繪製到show,所以......

$.get('/customers/' + custId).done(function(data){ 
    $(document).html(data) // something like this to replace the content 
}) 

拇指的這些事情是,與HTML首先做它的規則!然後使用AJAX,如果你覺得它適合。

祝你好運!

+0

謝謝!第一個答案正是我需要將custId發送到獲取請求 - 我很感謝你幫助我使用這個語法。現在我需要呈現客戶展示頁面。現在我得到以下內容:通過CustomersController處理#顯示爲'*/*'而不是通過CustomersController處理#顯示爲HTML,這是我在瀏覽器地址欄中輸入id時所得到的。如何獲取HTML渲染? – John

+0

這是第2部分)。如果你真的不明白你在做什麼,我就避免了AJAX的方法:/但基本上,當要求HTML瀏覽器只是呈現,但使用AJAX,你必須操縱DOM來獲得所需的結果。 – fbelanger

+0

我再次爲我的無知道歉。我也很感謝你耐心幫助我。我覺得我差不多是爲了達到目標,我想問問,如果你會這麼興奮,如果你能告訴我一個關於如何獲得控制器顯示客戶的HTML頁面的提示,或者如何讓jquery用HTML渲染來響應請求,而不是'*。*渲染 – John

相關問題