因此,我相信你们都熟悉,你可以在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.erb
和custom_js_file_name.js.erb
?
仅供参考:我在两个不同的应用程序上使用Rails 3.0.9和3.1.3,并假设我将show.js.erb
或任何其他应用程序放在Users文件夹中( views / users / .. )
答案 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
的渲染可能会产生额外的格式化问题。