Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在RubyonRails中从一个子目录呈现多个模板_Jquery_Ruby On Rails_Ruby_Ruby On Rails 3_Rubygems - Fatal编程技术网

Jquery 如何在RubyonRails中从一个子目录呈现多个模板

Jquery 如何在RubyonRails中从一个子目录呈现多个模板,jquery,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,Jquery,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,我的页面视图目录中存储了一些模板: 页面/设置/编辑\u帐户/ basic_info.html.erb relations.html.erb contact.html.erb 我有一段使用jquery.load函数的javascript。我基本上允许用户点击页面上的链接:基本信息、亲属、联系人,以及他们需要查看的信息,以便在不刷新页面的情况下将编辑显示在同一页面上。如果我使用这个路径“profile_path”,这是我在路径中设置的路径,那么它工作得非常好 例如: <script type

我的页面视图目录中存储了一些模板:

页面/设置/编辑\u帐户/ basic_info.html.erb relations.html.erb contact.html.erb

我有一段使用jquery.load函数的javascript。我基本上允许用户点击页面上的链接:基本信息、亲属、联系人,以及他们需要查看的信息,以便在不刷新页面的情况下将编辑显示在同一页面上。如果我使用这个路径“profile_path”,这是我在路径中设置的路径,那么它工作得非常好

例如:

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

$(“#theBasics”)。单击(函数(){
$(“#editProfileContent”).load();
});
不过,我想做的是为pages/settings/edit_account中的每个模板设置更多这些功能/

这不起作用:

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

      });

$(“#theBasics”)。单击(函数(){
$(“#editProfileContent”).load();
});
我可以在控制器中创建几个动作并为它们设置路由,或者我可以创建一个全新的控制器

但必须有一种更干净的方式来实现我想要实现的目标。我不能对所有模板使用1个操作吗

如果我将“页面/设置/编辑\帐户/基本\信息”放入页面控制器中的一个操作中,然后在javascipt.load函数中,我只调用操作路由,它可以工作,但一次只能呈现一个模板

我希望我没有把任何人弄糊涂


非常感谢您的帮助。

您最好的选择是创建多个操作。如果每个ajax调用正在加载不同的信息或该信息的不同视图,那么它应该有自己的操作端点

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

例如:

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

然后

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

在您的javascript中。

非常感谢。我在控制器中的操作中使用case。我想知道是否有一个rails相当于这个php版本,因为这就是我应该如何解决它的。谢谢