Ruby on rails 使用acts_as_taggable_on显示标记链接
我有一个关于《塔格布尔》的问题。我正在制作一个BBS,想显示链接标签。但是,我的网站只能显示字符串,不能显示链接。所以我想把链接放在字符串上 我想把你链接到每个标签上 现在,一些标记保存在Ruby on rails 使用acts_as_taggable_on显示标记链接,ruby-on-rails,ruby,acts-as-taggable-on,Ruby On Rails,Ruby,Acts As Taggable On,我有一个关于《塔格布尔》的问题。我正在制作一个BBS,想显示链接标签。但是,我的网站只能显示字符串,不能显示链接。所以我想把链接放在字符串上 我想把你链接到每个标签上 现在,一些标记保存在Tag表中,该表有以下列(id、name、created\u count) 这是我的代码: post.rb def save_tags array = self.check_taggable_word(self.title) self.tag_list.add(array, parse: true) end
Tag
表中,该表有以下列(id、name、created\u 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
def show
@post = Post.find(params[:id])
@category = @post.category
end
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
routes.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
def show
@post = Post.find(params[:id])
@category = @post.category
end
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
它不太确定你想要实现什么,如果你也发布你的控制器,它可能会有所帮助 但是,可以在rails中使用link_to helper来显示链接
<% = link_to 'text', some_path %>
在控制器中的某个位置获取标记的所有条目。然后,你可以循环标记,每个标记……都可以生成所有标记的链接,如果你想链接到标记#显示链接,则必须转到找到特定标记的操作。例如,这可以是在该操作中:
@tag = Tag.find(params[:id])
。就这样
好的,我再编辑一次。尝试:
在youpostcontroller#show中,您可以像这样显示该帖子的所有标签
@post.tags.each do |tag|
<%= link_to tag.name, tag %>
@post.tags.each do| tag|
这要求标记具有属性“name”
在你的帖子中,你可以做什么
<%@post.each do |post|%>
<%post.tags.each do |tag|%>
<%= link_to tag.name, tag %><%end%><%end%>
如果您只想在不显示post等的情况下显示所有标签,请尝试:
在您的控制器帖子中#索引
@tags=Tag.all
在您当前的控制器操作帖子#show中,您将只找到该@post的标记,因为您所做的只是按id查找帖子。因此,如果关联正确,您将只找到该帖子的标记
这允许您执行@post.tags.each do | tag |
等操作。
标记
不能用于链接到帮助程序。如果你使用
它将向您显示一个带有tag.name的链接,该链接链接到属于帖子的每个标记的特定标记 不知道我是否理解。你在问如何制作链接吗?对于链接,你可以使用link\u-to-helper…..gem说制作这样的链接::tag,:id=>tag.name},:class=>css\u-class%>是的。我想创建标记链接。我尝试了
:tag,:id=>tag.name},:class=>css\u class%>
但是参数数量错误(1..4为0)
显示错误。很抱歉,我创建了一个答案,注释刚刚被复制,不一定适用于您的代码。非常感谢KcUS\u unico。我添加了两个标记,然后尝试了上面的代码,但是参数数量错误(1代表2)
显示错误。try:这段代码看起来很有效。但此链接指向(…/posts/“tag.name”)的路径。我想要找到(…/tags/“tag.name”)的路径。非常感谢KcUS_unico.Ya,您需要在routes.rb中有一个用于此操作的路由。有吗?谢谢KcUS!我只是将我的routes.rb更新到上面。
@tags = Tag.all
<%@tags.each do |tag|%>
<%= link_to tag.name, tag %><%end%>