2014-02-05 2 views
0

레일즈 앱에는 experiment 인스턴스가 있으며 각 실험에는 attachments이 있으며 데이터베이스에 바이너리 블롭으로 표시되며 상당히 클 수 있습니다. 이 질문은 첨부 파일을 보여주기위한 link_ 코딩의 효율성에 관한 것입니다. 내가 레일 응용 프로그램은레코드를 가져 오지 않고 Link_to 효율을 얻으십시오.

<%= link_to @experiment.attachment.file_name, {:controller => :attachments, :action => :show, :id => @experiment.attachment_id}, {:method => :get} if ! @experiment.attachment_id.nil? %> 

정당화로 페이지를 렌더링에보다 효율적으로 될 것이라고 말했다가되었습니다 그러나

<%= link_to @experiment.attachment.file_name, @experiment.attachment %> 

는 첫 번째 버전은 첨부 파일을 가져 오는 것을 :

원래 나는이 있었다 데이터베이스에서, 그리고 두 번째는 더 길지 만 더 낫다. 사실입니까?

두 버전 모두 사용자가 첨부 파일의 표시 페이지로 이동하는 것과 동일한 작업을 수행하며 첫 번째는 레코드 표시 페이지에 link_to 링크를 수행하는 기본 방법입니다.

코드의 두 번째 부분을보기의 코드에 덜 복잡하게 만드는 방법이 있습니까?

+0

방금 ​​할 수 없습니다 : '<% = LINK_TO @ experiment.attachment.file_name, attachment_path (@ experiment.attachment_id) %> 또 다른 아이디어' –

+0

, 내가 먼저 인식하지 않았다 조각은 실제로 부착을 가져오고 더 느리게 만들 것입니다. – NarDmw

+0

예, 전체 리소스를로드하고 거기에'to_param' 메서드를 호출하고 있습니다. –

답변

0

(경로에 _path을 apped하는 것을 잊지 마세요) 모든 경로를 볼 수 rake routes를 사용하여 다음과 같이 뭔가를 얻을 수하는 레일 경로 도우미를 사용해보십시오 :

experiment_attachment_path(@experiment.attachment) 
0

내가 사용하여이 표현 것이다 보기가 그것의 to_param 방법을 사용할 수 있도록로드하기 위해 ActiveRecord 인스턴스를 사용하는 것보다는 경로 경로를 사용해야합니다.

<%= link_to @experiment.attachment.file_name, attachment_path(@experiment.attachment_id) %> 
관련 문제