0

我正在尝试了解 foobar rails 代码并遇到以下问题。控制器 A 继承自控制器 B (A < B)。并且它们都没有“索引”方法,但 B 具有视图“app/views/B/index.rhtml.erb”,它将在 A 控制器的该操作上呈现。在那个视图中有一行:

render(:partial => "find")

但是有两个文件:“app/views/A/_find.rhtml.erb”和“app/views/B/_find.rjs”我不明白如果从A控制器调用索引会呈现哪个。更多“app/views/B/_find.rjs”有一行:

page.replace_html(:contentBody, :partial => "find")

而且我不知道这里呈现的是什么。有任何想法吗?

4

1 回答 1

1

rjs如果请求了脚本(通常通过 AJAX 请求),您的应用程序只会呈现文件。如果用户正常访问您的 index 操作(即使用浏览器对 HTML 的请求),您的应用程序将呈现index.rhtml.erb以生成 HTML 响应,而 HTML 响应将依次呈现_find.rhtml.erb。如果您的页面的某些部分正在请求脚本,那么_find.rjs将被呈现(实际上只是在幕后产生一个 javascript 响应)。在这种情况下,_find.rjs实际上使用_find.rhtml.erb调用中的 HTML 部分replace_html来替换页面的一部分。

顺便说一句,您似乎正在使用旧版本的 Rails,rhtml并且rjs不再使用。我建议使用更新的版本。

于 2012-07-26T21:18:39.997 回答