0

对 Rails 有点陌生,长期的程序员。我真的有一个关于视图、控制器和部分的问题——想知道我是否有这个设置。

我有一个页面控制器,并且在索引页面(实际上是页面索引方法)上,我有一个部分布局,称为特色(即 app/views/layouts/_featured.html.erb)——我也有得到了一个特色班。我想基本上在这里绘制特色类的索引。但当然它不起作用。所以问题是:

在页面本身中,我有 <%= render 'features/index' %> 我开始认为这是错误的方法......

我是否要取消此部分方法并仅调用 <%= render 'features/index' %> 并让一切自然进行或

将特色集合路由到部分的正确方法是什么?由于控制器实际上是 Pages 似乎我正在与潮流作斗争。

4

3 回答 3

0
<%= render 'features/index' %>

鉴于您的描述,这样做是错误的。这将尝试渲染app/views/features/_index.html.erb您未提及的部分。

app/views/layouts/_featured.html.erb要在您处渲染部分内容(可能需要更详细一些)

<%= render partial: "layouts/featured" %>

我能提供的最好建议是将集合传递给这个部分

<%= render partial: "layouts/featured", locals: { features: @features } %>

由于您似乎打算将此局部显示为布局的一部分,因此我假设您希望此局部显示在多个页面上。这意味着在多个操作中,您需要Feature为该@features实例变量分配一组实例。一种方法是使用before_action.

before_action :setup_features

# ...

private

  def setup_features
    @features = Feature.all
  end

开始了解更多关于过滤器的好地方是在Rails 指南

于 2013-09-05T04:11:09.063 回答
0

由于页面控制器实际上是在其 def 索引中呈现主索引页面,所以我所要做的就是 @features = Feature.all 并且该变量可用于将部分拉入索引页面。

我需要习惯来自其他语言/框架的简单 Rails。

于 2013-09-05T04:27:00.817 回答
0

“app/view/layouts/_featured.html.erb”处的部分只能用

render 'featured'

并不是'featured/index'

render 'featured/index'将呈现“app/views/layouts/featured/_index.html.erb

于 2013-09-05T04:13:13.233 回答