我有以下链接:
<%= link_to 'About', url_for(Page.first) %>
我更愿意拥有一条命名路线,而不是这样:
<%= link_to 'About', first_page_path %>
我知道我可以创建一个帮助方法来实现这一点,但我想知道是否有一种&#39; Rails方式&#39;这样做?
答案 0 :(得分:1)
我不会详细介绍'为什么你会想要这样的事情'。我不认为你能得到你想要的东西。当应用程序启动时会加载路由,那么当前第一条记录被删除时会出现什么行为?
我建议使用你所谈到的辅助方法但有一点点扭曲
def first_or_record(page_id = nil)
Page.find_by(id: page_id) || Page.first
end
答案 1 :(得分:1)
要做到这一点并不是一件非常棘手的事情,很难就这种做法提出建议。但是,关于&#39;关于&#39;刚刚成为数据库表中第一页的页面非常脆弱,应该被锁定在某个模型中,因为模型具有逻辑性。我会做这样的事情
#route
get '/about', to: 'page#about'
将转到Page控制器&#34;关于&#34;行动,这是解决这个问题的最合适方式。
然后在页面控制器中我会有
def about
@page = Page.about_page
#render the Page show action or whatever
end
然后又使用此Page类方法
#in Page model
#class methods
class << self
def about_page
self.first
end
end
这样,如果您决定使用一种不那么脆弱的方式来选择要用于关联的页面,那么它将改变模型方法,并且URL,控制器等保持不变。< / p>
现在,在您看来,您可以像
一样链接到它<%= link_to 'About', "/about" %>