Ruby on rails Rails 4 Partials创建另一个视图的副本

Ruby on rails Rails 4 Partials创建另一个视图的副本,ruby-on-rails,Ruby On Rails,我正在构建一个电子商务应用程序,并试图创建一个特色项目小部件。我有一个特色项目视图,它链接到一个控制器方法,该控制器方法过滤特色项目。该视图是featured.html.erb。我创建了该文件的一个副本,并将其命名为_featured.html.erb作为部分文件 但是,当我在主页上呈现如下部分时,它不会调用控制器方法,因此我不会应用特色过滤器 <%= render 'featured' %> 是否有一个选项可以告诉rails在部分服务器上使用相同的控制器方法?或者有其他方法可

我正在构建一个电子商务应用程序,并试图创建一个特色项目小部件。我有一个特色项目视图,它链接到一个控制器方法,该控制器方法过滤特色项目。该视图是featured.html.erb。我创建了该文件的一个副本,并将其命名为_featured.html.erb作为部分文件

但是,当我在主页上呈现如下部分时,它不会调用控制器方法,因此我不会应用特色过滤器

<%= render 'featured' %>


是否有一个选项可以告诉rails在部分服务器上使用相同的控制器方法?或者有其他方法可以做到这一点吗?

您应该在项目模型中添加一个范围,而不是在控制器中执行过滤逻辑

比如说在你的项目模型中

scope :featured, -> { where(featured: true) } # or any logic you have
然后在呈现主页的控制器操作中,您应该

@items = Item.featured
然后在主页视图中,您可以呈现部分内容并将项目传递给它

render 'your_path_to\featured', items: @items
因此,在“特色”部分中,您可以访问项目

items.each do |item|

然后,您可以通过在featured.html.erb中呈现“\u featured”部分内容,并在呈现视图的操作中设置@items变量来干燥代码。

如果我理解您的意思;您有2个控制器,并且您正在尝试检索相同的部分。首先我要告诉你,我觉得这不太合适。你能再解释一下吗?我有一个控制器和一个视图。我想将视图呈现为另一个视图页面上的小部件,因此我需要一个局部视图。但是,该部分不读取控制器中的方法。