2012-07-26 57 views
0

我想了解foobar的Rails代码和遇到以下。 有控制器A,其从控制器B(A < B)继承。并且它们都没有“索引”方法,但是B有查看“app/views/B/index.rhtml.erb”,它将在A控制器的该动作上呈现。在该视图中有一行:渲染两个部分中的哪一个?

render(:partial => "find") 

但有两个文件: “应用程序/视图/ A/_find.rhtml.erb” 和 “应用程序/视图/ B/_find.rjs” ,我可以”如果索引是从A控制器调用的,那么理解它将被呈现。 进一步“应用程序/视图/ B/_find.rjs”有行:

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

,我已经不知道在这里呈现。 任何想法?如果请求脚本(通过一个AJAX请求通常)

+0

我认为,这取决于至极控制器用户看到,这行为是由路由系统(配置/ routes.rb中) – eveevans 2012-07-26 18:52:49

回答

1

您的应用程序将只呈现rjs文件。如果用户访问索引动作正常(即,用于使用浏览器的HTML的请求),你的应用将呈现index.rhtml.erb以产生HTML响应,这将反过来渲染_find.rhtml.erb。如果页面的某个部分正在请求脚本,则会呈现_find.rjs(实际上,它仅在后台生成JavaScript响应)。在这种情况下,_find.rjs实际使用的HTML部分_find.rhtml.erb在调用replace_html更换页面的一部分。

顺便说一下,你似乎正在使用老版本的Rails,因为rhtmlrjs不再使用。我建议使用更新的版本。

+0

是的,这是Rails的2.3.5定义。而在此刻,我没有资源将整个应用程序切换到Rails 3. – lompy 2012-07-27 11:01:48

+0

谢谢!现在变得更清晰了。如果我对你有帮助,那么如果我试图访问'application.com/A/index',我会将_find.rhtml.erb作为index.rhtml.erb的一部分。 – lompy 2012-07-27 11:09:04