link_to路径ActiveRecord调用

时间:2013-08-19 16:29:57

标签: ruby-on-rails activerecord link-to

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

<%= 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')) %>

如果是这样,我的控制器中是否需要任何特殊功能?

2 个答案:

答案 0 :(得分:1)

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

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

查看仅供参考。在不了解太多逻辑的情况下应该愚蠢。就像坐在餐厅的客户一样,View只是在不知道烹饪方式的情况下吃的食物。

MVC方式是在Controller中准备这样的食物,并用实例变量提供视图。

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

# View
<%= link_to "Project ABC", @project %>

答案 1 :(得分: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