如何在页面加载时加载嵌入式ruby javascript文件?

时间:2012-01-02 17:25:41

标签: ruby-on-rails ruby-on-rails-3 jquery

因此,我相信你们都熟悉,你可以在Rails中调用html.erb文件。您还可以设置远程渲染操作以调用嵌入的ruby文件(例如,将“post”表单提交到“posts”控制器,远程处理它,并调用js.erb文件来更新页面中的元素)。 / p>

我想知道的是当我运行加载模板的动作(html.erb文件)时如何运行js.erb文件。要解释一下,请考虑我是否要运行用户显示页面:

 class UsersController < ApplicationController
   def show
     @user = User.find(params[:id])
   end
 end

链接到user_path(User.find(1))会加载show.html.erb,一切看起来都很棒。

但是如果我想点击指向user_path(User.find(1))的链接并加载show.html.erb同时加载show.js.erb该怎么办?如果(我希望如此)这是可能的,我怎样才能调整节目定义以加载show.html.erbcustom_js_file_name.js.erb

仅供参考:我在两个不同的应用程序上使用Rails 3.0.9和3.1.3,并假设我将show.js.erb或任何其他应用程序放在Users文件夹中( views / users / ..

2 个答案:

答案 0 :(得分:1)

默认情况下,

def show
  @user = User.find(params[:id])
end

仅根据是否通过HTML,JSON,JS等请求呈现show视图。

我认为你所描述的内容更适合Rails中的render方法。通常,控制器使用format.(:format)块中的不同respond方法根据请求类型(JSON,HTML,JS等)响应控制器调用。

show.html.erb文件中:

<%= render "users/show.js" %>

这允许您在另一个视图中呈现所需的任意文件。这也允许您将大视图文件拆分为更小(可重复)的部分(称为部分)(注意:所有部分在开头都以_字符命名,并通过{{ 1}}将呈现<%= render :partial => "users/my_partial" %>文件)

答案 1 :(得分:-1)

请求时show操作呈现show.js.erb文件,格式为js。这应该让Rails呈现动态模板;现在使用javascript链接标记从原始show.html.erb链接到它。

show.html.erb

<script type="text/javascript" src="<%= show_users_path(@user.id) -%>.js"></script>

我没有试过这个,而show.js.erb的渲染可能会产生额外的格式化问题。