2011-04-26 96 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