2013-08-19 50 views
0

我有用戶和項目,我試圖通過使用ActiveRecord調用搜索項目來創建項目的鏈接。這是我的link_to:link_to path 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')) %> 

如果是這樣,我需要什麼特殊的我的控制器?

回答

1

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

是的代碼可能工作,但工作不等於好。 (您在第一次精算後錯過了逗號,但我認爲它們拼寫錯誤)

查看僅供參考。不知道多少邏輯,它應該是愚蠢的。像坐在餐廳裏的客戶一樣,View只是在不知道它是如何烹飪的情況下吃了食物。

MVC的方法是在Controller和Feed視圖中使用實例變量準備食物。

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

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

爲什麼不只是按項目名稱搜索?

編輯:比利·陳說得對,應該將其中的大部分移到控制器。

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