我有用户和项目,我正在尝试通过使用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')) %>
如果是这样,我的控制器中是否需要任何特殊功能?
答案 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