2009-10-01 52 views
3

比方说,我有这样的:硬编码的路线

<%= 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的指定确切的网页...

回答

-1

更新我的问题---------------------->

感谢所有的答案。这是一种一次性的情况。我的解决办法是简单地用HTML去:

<a href="/pages/4-great-title-here">My Big Link</a> 

它生产所需:

wwww.mysite.com/pages/4-great-title-here 

我没有通过页面对象要循环和废物对数据库的调用这一个环节。非常感谢所有的答案!

1

这是因为您指定的ID:

page_path(:id => 4) 

你可以指定在此方法所需的路径:

page_path(:id => "#{id}-#{title.parameterize}") 

你在哪里定义了to_param方法?在模型中?

+0

嗨托比,是的,它在page.rb.我仍然不清楚为什么指定:id不会采取:id并调用page.rb中的to_param方法? – drpepper 2009-10-01 02:22:58

+0

其实我可以看到为什么 - 我想我更寻找解决方法:) – drpepper 2009-10-01 02:24:14

5

只需使用page_path(page)。我猜路径帮助程序不会自己访问数据库(这很好),但是如果它们被提供了一个对象并且该对象具有to_param方法,则此方法将用于生成标识符。

<%= link_to "My Big Link", page_path(page) %>