2013-08-19 5 views
0

사용자와 프로젝트가 있는데 ActiveRecord 호출을 사용하여 프로젝트를 검색하여 프로젝트에 대한 링크를 만들려고합니다. 나는 이것이 routes.rb에없는 것을 알고link_to 경로 ActiveRecord 호출

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

, 그래서 어떻게 내가 프로젝트를 얻을 수있는 쿼리를 작성 곳은 그래서 나는 이런 식으로 뭔가를 할 수 있도록 할 수있을 것입니다 : 이것은 내 LINK_TO입니다 보여? 다음과 같이 할 수 있습니까?

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

그렇다면 내 컨트롤러에는 특별한 것이 필요합니까?

답변

1

MVC 패턴 이해를 향상시켜야합니다.

예 코드가 작동하지만 작동이 양호하지 않을 수 있습니다. (첫 번째 인수 뒤에 쉼표가 없지만 철자가 잘못되었다고 가정합니다.)

보기는 현재 만 있습니다. 많은 논리를 모른 채 바보가되어야합니다. 식당에 앉아있는 고객과 마찬가지로 View는 요리 방법을 몰라도 음식을 먹습니다.

MVC 방법은 인스턴스 변수를 사용하여 컨트롤러 및 피드보기에서 이러한 음식을 준비하는 것입니다.

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

# View 
<%= link_to "Project ABC", @project %> 
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 
관련 문제