[英]After AJAX call I can't see the result in my view
我使用Rails 4,基本上我正在用jQuery遍歷DOM的html網頁上搜索一個值。 我將該值存儲在一個名為key的變量中,然后我想使用該值發出如下請求: Record.find(id: key).name
我有一個用戶和一個記錄模型。 在app/views/users
目錄中,我有部分_form.html.erb
,其中正在使用一些JavaScript。
var key = $('input#record_id').val();
而且我希望該變量在用戶控制器的方法搜索中可用,以便可以使用參數key發出請求。
所以我正在做一個看起來像這樣的AJAX調用:
$('#example tbody').on('click','tr', function(){ var key = $(this).val(); $.ajax({ url: "/search", type: "POST", data: { key: key }, complete: function(){ console.log('success'); } }); });
在我的配置路由文件中,我寫了這條路由:
post '/search' => 'users#search'
在我的用戶控制器中,我編寫了這樣的方法:
def search @record = Record.find(params[:key]) end
然后,我創建了一個search.js.erb
文件,該文件的名稱與控制器中的方法的名稱相同。 在這個文件中,我寫道:
$('div#result').html("<%= @record.name %>");
但是,當我單擊表格的一個元素時,div中沒有任何內容
我做了很多console.log()來查看變量鍵中的內容,並且可以在其中找到正確的值。 此外,我的Ajax調用的工作方式與在控制台日志中返回“成功”一樣,在選項卡網絡中,我可以看到狀態為“ ok”的名為search的任務。
我有錯誤500,但我在方法搜索中添加了render json: 'ok'
來解決
現在,我非常接近打印請求@record.name
的結果,但是我找不到解決方法。
誰能給我解決方案? 歡迎任何幫助。
控制器具有默認情況下返回html的約定。 在這種情況下,您似乎要返回.js.erb部分。 為此,您需要配置控制器以返回js響應。
def search
@record = Record.find(params[:key])
respond_to do |format|
format.js {}
end
end
response_to塊中的format.js將控制器指向您的.js.erb部分。 如果失敗,請發布服務器輸出日志的結果,我想該日志將寫入您在本地運行應用程序的任何終端/控制台。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.