【问题标题】:How to turn blog title into a link on the index page in rails 4 using Friendly ID gem如何使用 Friendly ID gem 将博客标题转换为 Rails 4 中索引页面上的链接
【发布时间】:2014-03-16 06:28:24
【问题描述】:

我还是个新手,不知道如何让我的博客标题链接到完整的帖子。我正在使用友好的 id gem 并按照 http://guides.rubyonrails.org/getting_started.html 的入门说明构建了这个基本博客

以下是将标题转换为链接的当前代码,但所有标题都继续链接到帖子的索引页面。可链接的标题应指向类似于此示例的内容:

example.com/posts/my-first-blog-post

<h1>The Blog!</h1>
  <div class="container"> 
    <div class="row">
      <div class="col-md-1">
        <% @posts.each do |post| %>
          <h2><%= link_to post.title %></h2>
          <P><%= truncate (post.body), :length => 250 %></p>
        <% end %>
      </div>
    </div>
  </div>

如果能帮助我将这些标题链接到使用友好 ID 创建的链接名称,我将不胜感激。如果有任何区别,则从标题生成 slug,当我不使用友好 ID 时,我确实为所有以前发布的博客文章添加并保存了 slug。

提前感谢您的帮助。

【问题讨论】:

  • 以下所有三个答案都解决了这个问题。感谢您的帮助。对所有三个都投了赞成票,因为我不能接受所有都是成功的答案。

标签: ruby-on-rails ruby-on-rails-4 friendly-id


【解决方案1】:

方法签名(你使用它的方式)是:

 link_to text_to_display, path

如果你遵循 Rails 标准,你应该这样做:

link_to post.title, post_path(post.slug)

实际上 .slug 不是必需的,因为 FriendlyId 会覆盖模型中的 to_param 方法。

所以你可以这样做:

link_to post.title, post_path(post)

甚至

link_to post.title, post

由你决定...

【讨论】:

  • 我不明白这被接受为“最佳”答案,因为 post.slug 的使用不是必需的,而且 gem 的文档中也没有提到。对我来说,以这种方式使用它会降低友好 ID 解决方案
  • 这怎么能写得更短?
  • @Danny,好吧,你确实添加了那个......不是很清醒。邻居干杯!
  • 我们确实是邻居!对不起-1。不知道这只是为了错误的答案!
  • 没什么大不了的 :) 实际上几乎没有人赞成,所以反对票有点令人不安
【解决方案2】:

在你的模型中,你应该有类似的东西

  friendly_id :title, use: :slugged

你的链接应该是

link_to post.title, post

您不必在视图中引入“slug”。只需更新模型即可!

【讨论】:

    【解决方案3】:

    我们喜欢使用的一种方法是不包含元素的属性:

    <%= link_to post.title, post_path(post) %>
    

    如果您在模型中设置了friendly_id,这应该自动工作

    【讨论】:

      猜你喜欢
      • 2016-09-12
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2018-09-25
      • 2021-11-21
      • 2023-04-03
      相关资源
      最近更新 更多