0

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

<% @illustrations = IllustrationsController.get_related_by_novel %>

这是控制器中的方法:

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

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

谢谢。

4

1 回答 1

1

“即使我得到这个调用,我也不知道如何将参数从当前查看的插图传递给控制器​​,以便它可以运行查询。” 您可能想阅读有关关联路由的 Rails 指南。显示插图的标准 RESTful 路线将是:

get /illustrations/:id => illustrations#show

这会将请求发送到具有params[:id]插图 ID 设置的插图控制器。理想情况下,您的控制器应该委托给模型以查找相关插图。假设你有一个标准有很多并且属于 Novel 和 Illustration 之间的关系,那么你的控制器代码可能如下所示:

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

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

于 2013-03-31T13:37:15.033 回答