2011-04-12 67 views
0

有什么方法可以在Rails模板中输出动作?相当于ASP.NET MVC Html.RenderAction的东西? 我需要在边栏中渲染一些东西,我不想将查询放在partials或特定的控制器中。到目前为止,我只能想到一种方法 - 将一些东西放入@stuff(通过任何方式)实例var和let render找到适当的部分或明确指定它。能够只改变一个文件来改变边栏的内容会更好(如在ASP中)。在模板中呈现动作输出

回答

0

是的,有。您可以将“侧栏”部分添加到应用程序布局(在app/views/layouts文件夹中)。

你可以把获得的 “边栏” 变量中的before_filter在ApplicationController中

class ApplicationController < ActionController::Base 
    before_filter :sidebar_function 
+0

感谢名单。忘记了我可以改变控制器中的get_the_stuff过滤器,并让我自己的帮手决定部分渲染。但是,如果我想让控制器中的每个动作都有不同的侧边栏,我需要使用“:only”。 – synapse 2011-04-12 21:16:50

+1

或者你可以在你的控制器模板中使用:content_for http://railscasts.com/episodes/30-pretty-page-title(不过,不要忘记在ApplicationController中包含合理的默认值) – x10 2011-04-12 21:24:19

+0

它会得到。 – synapse 2011-04-12 21:42:18

0

我不知道ASP.net,但是,我认为Rails产量可能是解决方案。这里是一个小例子:

视图:

<% content_for :one do %> 
    Test one 
<% end %> 

<% content_for :two do %> 
    Test two 
<% end %> 

<p>Hi</p> 

application.html.erb

<%= yield :one %> 
<%= yield %> 
<%= yield :two %> 

见Railsguides:http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

+0

显然问题在于动态内容,这就是为什么我谈论查询和实例变量。 – synapse 2011-04-12 21:17:27

+0

我真的没有看到你的问题。您可以在视图中定义content_for,让它在application.html.erb中呈现(我假设您的侧边栏是)或者在控制器中使用before_filter定义某些变量,或者在单独的控制器方法中执行。 – 2011-04-13 07:12:45