2011-08-20 56 views
0

我有存储在我的网页一些模板查看目录:如何从一个子目录呈现几个模板在Ruby on Rails的

页/设置/ edit_account/ basic_info.html.erb relatives.html.erb contact.html.erb

我有一块使用jQuery .load功能的JavaScript。我基本上允许用户点击页面上的链接:基本信息,亲戚,联系人并获得他们需要查看的信息,以便使编辑显示在同一页面上而不会让人耳目一新。如果我使用这个路径“profile_path”,这是我在路线中设置的路径,那么它工作得很好。

例子:

<script type="text/javascript"> 
     $("#theBasics").click(function() { 
      $("#editProfileContent").load(<%= profile_path %>); 
}); 

我想,虽然做的是建立更多的这些功能为每个在页/设置/ edit_account模板/

这不起作用:

<script type="text/javascript"> 
     $("#theBasics").click(function() { 
      $("#editProfileContent").load(<%= render 'pages/settings/edit_account/basic_info' %>); 

     }); 

我能为他们创造在控制器中的几个动作,并设置路线或我能创造一个全新的控制器。

但一定要实现我想要实现一个更清洁的方式。我不能对所有模板使用1个动作吗?

如果我把render'pages/settings/edit_account/basic_info'放到页面控制器的一个动作中,然后在javascipt .load函数中,我可以得到这个工作我只是调用动作路由,它可以工作,但我只能渲染一次一个模板。

我希望我没有混淆任何人。

帮助将不胜感激。

回答

0

最好的办法是创建多个动作。每个ajax调用都应该有自己的动作终点,如果它正在加载不同的信息,或者该信息的不同视图。

如果唯一的区别是在视图,可以使用单一的控制器动作,并传递一个参数,该参数可以然后在操作的渲染阶段用来控制使用哪个视图。

例如:

case params[:view] 
    when 'contact' render 'pages/settings/contact...' 
    when 'relatives' render 'pages/settings/relatives...' 
end 

然后

$("#dest").load('<%= profile_path({ :view => 'contact' }) %>'); 
在JavaScript

+0

谢谢现场。我在控制器的动作中使用这种情况。我想知道是否有一个相当于php版本的rails,因为这是我将如何解决它。谢谢 – LondonGuy

相关问题