在我的Rails应用程序中有experiment
个实例,每个实验都有attachments
,它们在数据库中表示为二进制blob,可能非常大。这个问题是关于编码link_to显示附件的效率。
最初我有这个:
<%= link_to @experiment.attachment.file_name, @experiment.attachment %>
但是我被告知Rails应用程序在使用
呈现页面时效率更高<%= link_to @experiment.attachment.file_name, {:controller => :attachments, :action => :show, :id => @experiment.attachment_id}, {:method => :get} if ! @experiment.attachment_id.nil? %>
理由是第一个版本从数据库中获取附件,第二个版本不从中获取附件,使其更好,尽管更长且更丑。这是真的?
两个版本在将用户引导到附件的显示页面时完成了同样的事情,我的印象是第一个是做link_to记录显示页面的默认方式。
有没有办法简化第二段代码,使视图中的代码不那么糟糕?
答案 0 :(得分:0)
尝试使用rails路由助手,使用rake routes
查看所有路由然后你可以得到这样的东西(不要忘记apped _path路由):
experiment_attachment_path(@experiment.attachment)
答案 1 :(得分:0)
我会使用路径路径来表达这一点,而不是使用ActiveRecord实例加载,因此视图可以使用其to_param
方法(这是它在幕后所做的)。
<%= link_to @experiment.attachment.file_name, attachment_path(@experiment.attachment_id) %>