我对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
答案 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的链接,该链接指向属于帖子的每个标记的特定标记。