0

我有用户和项目,我正在尝试通过使用 ActiveRecord 调用搜索项目来创建项目的链接。这是我的链接:

<%= link_to "Project ABC" User.first.projects.where('title' => 'Project ABC') %>

我知道这不在 routes.rb 中,所以我怎么能做到这样我可以做这样的事情,我写一个查询来获取项目然后显示它?我会做类似的事情:

<%= link_to "Project ABC" show_project_path(User.first.projects.where('title' => 'Project ABC')) %>

如果是这样,我的控制器需要什么特别的东西吗?

4

2 回答 2

1

您需要提高对 MVC 模式的理解。

是的,代码可能有效,但有效不等于好。(您在第一个 arg 之后错过了一个逗号,但我认为它们拼写错误)

视图仅供参考。它应该是愚蠢的,没有太多的逻辑。就像坐在餐厅里的客户一样,View 只是吃食物而不知道它是如何烹饪的。

MVC 方法是在 Controller 中准备这些食物,并用实例变量提供给 View。

# Controller
def show
  @project = User.projects.whatever
end

# View
<%= link_to "Project ABC", @project %>
于 2013-08-19T16:41:24.467 回答
0

为什么不只按项目名称搜索?

编辑:Billy Chan 说得对,大部分内容应该移到控制器上。

controller

@project = User.first.projects.find_by title: 'Project ABC'

view

<%= link_to "Project ABC" show_project_path(@project) %>

来源: http: //guides.rubyonrails.org/active_record_querying.html

1.1.5 find_by

Model.find_by finds the first record matching some conditions. For example:

Client.find_by first_name: 'Lifo'
# => #<Client id: 1, first_name: "Lifo">

Client.find_by first_name: 'Jon'
# => nil
于 2013-08-19T16:41:53.200 回答