使用acts_as_taggable_on显示标记链接

时间:2017-03-01 08:20:55

标签: ruby-on-rails ruby acts-as-taggable-on

我对acts_as_taggable_on有疑问。我正在制作BBS并希望显示链接标签。但是,我的网站只能显示字符串而不能显示链接。所以我想把链接放到字符串上。

我想link_to每个标签#show。

现在一些标签保存在Tag表中,此表包含这些列(id,name,created_count)

这是我的代码:

post.rb

def save_tags
 array = self.check_taggable_word(self.title)
 self.tag_list.add(array, parse: true)
end
def tag_lists
 tag_lists = self.tag_list
end
def check_taggable_word(text)
 ary = Array.new
 nm = Natto::MeCab.new
 nm.parse(text) do |n|
   ary<<n.surface
 end
 tags = ActsAsTaggableOn::Tag.pluck(:name)
 return ary & tags
end

show.html.erb(帖子)

  Tag:
  <% @post.save_tags %>
  <%= @post.tag_list %>

posts_controller.rb

def show
    @post = Post.find(params[:id])
    @category = @post.category
end

的routes.rb

Rails.application.routes.draw do
 root 'static_pages#home'
 get '/about' => 'static_pages#about'
 get '/contact' => 'static_pages#contact'
 resources :categories do
  resources :posts
 end
 resources :posts do
  resources :comments
 end
 resources :tags, only: [:index, :show]
end

1 个答案:

答案 0 :(得分:0)

您不确定要实现的目标,如果您发布控制器也可能会有所帮助。

但是,可以使用link_to helper

在rails中显示链接
<% = link_to 'text', some_path %>

您的目标是将链接连接到控制器操作,您可以在其中处理&#39;标记&#39; 您提到的宝石为您提供了另一个在视图中显示链接的示例。根据控制器中的命名约定,这可能适用于您。

<% tag_cloud(@tags) do |tag| %>
  <%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => 'css_class' %>
<% end %>

一般情况下:你需要打电话

@tags = Tags.all 

在控制器中的某个位置获取标签的所有条目。你可以循环遍历标签,每个标签可以产生你所有标签的链接,如果你想链接到标签#show链接必须转到你找到特定标签的动作。例如,这可以在该行动中:

@tag = Tag.find(params[:id])

。那就是它。

好的我再次编辑。尝试:

在你发布控制器#show中你可以像这样显示该帖子的所有标签

@post.tags.each do |tag|
<%= link_to tag.name, tag %>

这要求您的代码具有属性&#34; name&#34;

你可以在你的帖子#index中

<%@post.each do |post|%>
<%post.tags.each do |tag|%>
<%= link_to tag.name, tag %><%end%><%end%>

如果您只想在没有帖子的情况下显示所有标签等。尝试:

在您的控制器帖子#index

@tags = Tag.all 

<%@tags.each do |tag|%>
<%= link_to tag.name, tag %><%end%>

在您当前的控制器操作帖子#show中,您只会找到该@post的标签,因为您所做的就是按ID查找帖子。因此,如果关联正确,您将只找到该帖子的标签。

这允许你做@post.tags.each do |tag| ...等。 tag可以用于link_to助手 如果你使用 &lt;%= link_to tag.name,tag%&gt; 它会显示一个tag.name的链接,该链接指向属于帖子的每个标记的特定标记。