2011-04-26 100 views
0

我是一個jQuery初學者。rails-json-jquery沒有顯示視圖文件內容

我不得不一個控制器將呼叫從如下:

jQuery('#search_form').submit(function(){ 
     jQuery.post("topics/topics_details", { 
      'topic_name': jQuery('#topic_name').val(), 
     }, function(response){ 
     }, 'json'); 

     alert("hello"); 
     return false; 
    }); 

然後,從內部功能I執行一些指令。

def topics_details 
    @tag=params[:topic_name] 
    puts "\n\nTopic = ",@tag 
    end 

然後,我需要執行視圖文件(topics_details.html.erb)。但是,遺憾的是這種觀點沒有顯示(但是,在呈現控制檯。),而不是警報顯示。

如何調用部分文件?render_to_string/JSON可以你給一個基本的例子...

任何人可以,請幫助... 在此先感謝...

+0

有各種各樣的問題,在這裏,它是很難知道你實際上想要做什麼。 – 2011-04-26 10:29:51

回答

0

各種各樣的問題在這裏,很難知道你實際上想做什麼。您的警報不在jQuery.post調用中,因此它總會發生。爲什麼在那裏警惕?你不需要對響應做任何事情,所以你需要:a)在函數(響應)塊中放置某些東西,或者b)移除它並讓rails處理響應,例如在文章的topics_details.js.rjs文件中app/views/topics文件夾。通常這會用特定的部分替換頁面上的div的內容。您不會像這樣「執行視圖文件」,而是評估它並替換頁面上的一些內容。

而不是抓住表單提交,併發送一個ajax請求,爲什麼不把它作爲一個遠程表單?這樣它會自動提交使用ajax,你的控制器將以正常的方式處理它,然後用它的.js格式塊而不是它的.html格式塊進行響應。默認情況下,這將在相關的視圖文件夾中查找名爲.js.rjs的文件。例如

<%= form_remote_tag :url => '/topics/topics_details' do %> 
    usual form stuff here - fields, submit etc 
<% end %> 

這將會向/ topics/topics_details發出ajax請求。這就是它通常所做的,例如,它可以刷新一個名爲@topics的變量,該變量包含一個Topic對象數組。這些可以在您的頁面上以「主題」id列出。所以,你只需要刷新那個div。確保該div生活在主題文件夾中的部分被稱爲「_topics.html.erb」,然後你可以有以下js.rjs文件:

#in app/views/topics/topics_details.js.rjs 
@page.replace "topics", :partial => "topics/topics.html.erb" 
+0

hello,只有.js.rjs文件將呈現而不是.html.erb文件。 – jissy 2011-04-26 11:33:20

+0

你好,作爲主題搜索的一部分,我正在做這個。如果該主題已經存在,則重定向到topic_details頁面。否則,該主題需要添加爲新主題。第二個通過一些對話框正常工作。所以,我無法改變

的風格。你能幫助嗎? – jissy 2011-04-26 11:40:44