我在Rails應用上有一個搜索頁面。 Search控制器根據模型中的查詢獲取空格,並將它們返回爲json。我使用$ .getJSON在視圖中獲取它們:JSON對象在Rails視圖中
搜索控制器:
respond_to :html, :js
def index
@spaces = Space.find_spaces(params)
end
空間模型
def self.find_spaces(params = {})
params ||= {}
spaces = Space.all
spaces = spaces.near(params[:location], 10) if params[:location].present?
# spaces = space.where("name LIKE ? ", params[:name]) if params[:name].present?
spaces = spaces.where("description LIKE %?%" , params[:description]) if params[:description].present?
spaces
end
腳本(瀏覽量/搜索/ index.html.erb)
$(document).ready(function() {
$("#search_form").submit(function() {
// clear out current results first
$('#spaces').empty();
// fetch all results
$.getJSON("/search.json", $('#search_form').serialize())
.done(function(data) {
$.each(data, function(key, space) {
$('#spaces').append("<h1>" + space.name + "</h1><p>" + space.description + "</p>");
});
});
}).trigger('submit'); //this is to submit on page load if coming from home page
});
這一切工作正常,我可以訪問JSON對象,並使用jquery在視圖中顯示它,並且它沒有重新更新如預期的那樣新鮮,根據表格/查詢得到正確的結果。
我的問題是關於在視圖中使用Json數據。
我正在做這個對嗎?看起來有點愚蠢,因爲現在我不能在我的視圖中使用任何Rails助手(例如鏈接助手),因爲它只是javascript/json對象。我不想最終追加一個可怕的HTML與對象id等創建鏈接。
有沒有一個合適的/更好的方法,我應該這樣做?我已經閱讀了文檔和一些其他教程,但沒有真正(完全)描述在視圖中處理返回的Json的最佳方式。我應該使用partials嗎? .js.erb文件?魔法?
感謝您的任何啓示!
感謝這一切,很好地解釋。在文檔中沒有任何地方能真正詳細描述這種流程。 – 2014-12-18 10:52:07