Ruby on rails rails—在非该类的视图中显示该类的所有元素';索引视图

Ruby on rails rails—在非该类的视图中显示该类的所有元素';索引视图,ruby-on-rails,Ruby On Rails,我有一个有小说和插图的网站。在插图的显示页面上,我希望显示属于同一本小说的所有插图的缩略图网格。如何从视图中调用控制器中的方法(带参数),以返回使用find方法获得的小说列表?我尝试了以下操作,但错误消息声称控制器中没有此消息: class IllustrationsController < ApplicationController . .#some code here . def get_related_by_novel @illustrations = Illustrat

我有一个有小说和插图的网站。在插图的显示页面上,我希望显示属于同一本小说的所有插图的缩略图网格。如何从视图中调用控制器中的方法(带参数),以返回使用find方法获得的小说列表?我尝试了以下操作,但错误消息声称控制器中没有此消息:

class IllustrationsController < ApplicationController
.
.#some code here
.
  def get_related_by_novel
    @illustrations = Illustration.find(params[:id][:novel])
  end
end

以下是控制器中的方法:

class IllustrationsController < ApplicationController
.
.#some code here
.
  def get_related_by_novel
    @illustrations = Illustration.find(params[:id][:novel])
  end
end
类插图控制器

即使我得到了这个调用,我也不知道如何将当前查看的插图中的参数传递给控制器,以便它可以运行查询

谢谢。

“即使我接到这个电话,我也不知道如何将当前查看的插图中的参数传递给控制器,以便它可以运行查询。” 您可能需要阅读有关和的Rails指南。显示插图的标准RESTful路线应该是:

get/instructions/:id=>instructions#show

这将向插图控制器发送请求,并将
参数[:id]
设置为插图id。理想情况下,控制器应委托模型查找相关插图。假设您有一个标准,它有很多,并且属于小说和插图之间的关系,那么您的控制器代码可能如下所示:

class IllustrationsController
  def show
    @illustration = Illustration.find(params[:id])
    @related_illustrations = @illustration.find_related
  end
end
您的模型代码可能如下所示:

class Illustration
  def find_related
    self.novel.illustrations - [self]
  end
end

总是有更多的方法可以做到这一点,但在我看来,这保持了与模型的关联逻辑,并保持了控制器的轻量级

这是一个非常优雅的解决方案。谢谢你的描述。这确实有助于我理解如何在模型中使用一些实用工具,而不仅仅是控制器。这是我一直在努力解决的问题。谢谢