Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用友好ID将博客标题转换为rails 4中索引页上的链接_Ruby On Rails_Ruby On Rails 4_Friendly Id - Fatal编程技术网

Ruby on rails 如何使用友好ID将博客标题转换为rails 4中索引页上的链接

Ruby on rails 如何使用友好ID将博客标题转换为rails 4中索引页上的链接,ruby-on-rails,ruby-on-rails-4,friendly-id,Ruby On Rails,Ruby On Rails 4,Friendly Id,我还是个新手,不知道如何让我的博客标题链接到全文。我正在使用友好的id gem,并按照网站上的入门说明创建了这个基本的博客 下面是我当前的代码,它将标题转换为链接,但所有标题都将继续链接到帖子的索引页。可链接的标题应指向类似于此示例的内容: example.com/posts/my-first-blog-post <h1>The Blog!</h1> <div class="container"> <div class="row">

我还是个新手,不知道如何让我的博客标题链接到全文。我正在使用友好的id gem,并按照网站上的入门说明创建了这个基本的博客

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

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是从标题生成的,我确实添加并保存了slug,以便在我不使用友好id的情况下发布所有以前发布的博客文章


提前感谢您的帮助。

方法签名您使用它的方式是:

 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

取决于您……

方法签名的使用方式是:

 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

取决于您……

在您的模型中,您应该有如下内容

  friendly_id :title, use: :slugged
你的链接应该是

link_to post.title, post

你不必在你的观点中引入slug。只需更新模型即可

在您的模型中,您应该有

  friendly_id :title, use: :slugged
你的链接应该是

link_to post.title, post

你不必在你的观点中引入slug。只需更新模型即可

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

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

如果您在模型中设置了友好的_id,这应该会自动工作

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

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

如果您在模型中设置了友好的_id,这将自动工作

下面的三个答案都解决了问题。谢谢你的帮助。因为我不能接受所有答案都是成功的,所以我把这三个答案都投了赞成票。下面的三个答案都解决了这个问题。谢谢你的帮助。由于我不能接受所有答案都是成功的,所以我对这三个答案都投了赞成票。我不明白这是否被认为是最佳答案,因为使用post.slug是没有必要的,而且在gem的文档中也没有提到。对我来说,这样使用它,会降低友好的解决方案。这怎么可能写得更短呢?@Danny,好吧,你添加了一个。。。他没有完全清醒。为邻居干杯!我们确实是邻居!很抱歉-1。我不知道这只是为了错误的答案!没什么大不了的:实际上几乎没有人赞成,所以反对票有点令人不快。我不明白这是公认的最佳答案,因为使用post.slug是没有必要的,而且gem的文档中也没有提到。对我来说,这样使用它,会降低友好的解决方案。这怎么可能写得更短呢?@Danny,好吧,你添加了一个。。。他没有完全清醒。为邻居干杯!我们确实是邻居!很抱歉-1。我不知道这只是为了错误的答案!没什么大不了的:事实上,几乎没有人支持投票,所以反对票有点令人不安