假设我有这个:
<%= link_to "My Big Link", page_path(:id => 4) %>
在我的page.rb中,我希望通过永久链接显示网址,以便我使用标准:
def to_param
"#{id}-#{title.parameterize}"
end
现在,当我点击“我的大链接”时,它会将我带到正确的页面,但地址栏中的网址不会显示所需的永久链接。相反,它只显示标准:
wwww.mysite.com/pages/4
这是因为我将id硬编码到page_path中吗?如果我使用直接的html,它也无效。
<a href="/pages/4">My Big Link</a>
如果有人能够验证这种相同的行为并且让我知道这是否有意,我将不胜感激。我需要硬编码的能力:id来指定确切的页面......
答案 0 :(得分:5)
只需使用page_path(页面)。我猜路径助手本身不访问数据库(这很好),但是如果它们被提供了一个对象,并且该对象有一个to_param方法,则该方法用于生成标识符。
<%= link_to "My Big Link", page_path(page) %>
答案 1 :(得分:1)
这是因为您指定了id:
page_path(:id => 4)
您可以在此方法中指定所需的路径:
page_path(:id => "#{id}-#{title.parameterize}")
你在哪里定义了to_param方法?在模型中?
答案 2 :(得分:-1)
更新我的问题----------------------&gt;
谢谢大家的答案。这是一种一次性的情况。我的解决方案是简单地使用html:
<a href="/pages/4-great-title-here">My Big Link</a>
产生了所需的:
wwww.mysite.com/pages/4-great-title-here
我不想遍历页面对象并浪费对这个链接的数据库调用。尽管如此,对所有答案都非常赞赏!