2009-08-21 17 views
7

我有一个边栏将会有一些逻辑,类似于视图如何与控制器交谈。我在哪里把逻辑放在部分?我是否为布局创建了一个新的控制器并将其放置在那里?在导轨上的红宝石在布局中的部分逻辑

布局用于登录用户,如仪表板。 仪表板将会有一个边栏,在每个页面上显示相同的动态内容。 因为它被显示在每一页上,我想把它放在一个部分。

我只是困惑在哪里把发现和所有的信息。

回答

8

也许有更好的方法来做到这一点,但如果它是在大多数或所有页面上,你可以在你的ApplicationController上创建一个before_filter。您必须在不需要数据的控制器/操作上调用skip_before_filter

class ApplicationController < ActionController::Base 
    before_filter :load_sidebar_data 

protected 
    def load_sidebar_data 

    end 
end 

如果你不需要它在大多数页面上你还是会把该方法在ApplicationController中,你只是过滤器之前添加在你需要它。

+0

安迪,你一直对我巨大的帮助这两天!谢谢! – Ryan 2009-08-21 18:04:28

+0

我有一个侧边栏,除了主页以外的所有页面上都是相同的,我使用这段代码抓取所需的数据 - 现在我想知道在哪里放置实际视图脚本代码的正确位置? – jackocnr 2012-10-30 19:21:37

1

将部分放在布局文件夹中。该文件的名称应以下划线开头例如,“_mypartial.html.erb”。

然后,在你的意见,使用下面的代码,包括部分

“mypartial”%>

注意,指定哪些部分来呈现,当你不包括嵌入式Ruby代码的下划线。