【问题标题】:Hard coding routes in RailsRails 中的硬编码路线
【发布时间】:2009-10-01 02:07:24
【问题描述】:

假设我有这个:

<%= link_to "My Big Link", page_path(:id => 4) %>

在我的 page.rb 中,我想通过它们的永久链接显示 url,所以我使用标准:

 def to_param
    "#{id}-#{title.parameterize}"
 end

现在,当我单击“我的大链接”时,它会将我带到正确的页面,但地址栏中的 url 未显示所需的永久链接。相反,它只显示标准:

wwww.mysite.com/pages/4 

这是因为我在 page_path 中硬编码了一个 id 吗?如果我使用像这样的直接 html,它也不起作用..

<a href="/pages/4">My Big Link</a>

如果有人能验证同样的行为并让我知道这是不是有意的,我将不胜感激。我需要硬编码的能力:id 来指定确切的页面......

【问题讨论】:

    标签: ruby-on-rails routing routes


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这是因为你指定了id:

      page_path(:id => 4)
      

      你可以在这个方法中指定你想要的路径:

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

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

      【讨论】:

      • 嗨,托比,是的,它在 page.rb 中。我仍然不清楚为什么指定 :id 不会采用 :id 并在 page.rb 中调用 to_param 方法?
      • 其实我明白为什么 - 我想我更多的是在寻找解决方法:)
      【解决方案3】:

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

      感谢大家的回答。这是一种一次性的情况。我的解决方案是简单地使用 html:

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

      产生了想要的:

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

      我不想循环浏览页面对象并为这个链接浪费对数据库的调用。非常感谢所有的答案!

      【讨论】:

        猜你喜欢
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 2016-06-13
        • 2011-01-07
        • 2014-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多