Ruby on rails 如果条件为真,则显示文本
我试图让文本“Tags:”仅在标记存在时显示,因此我在视图中执行了以下操作:Ruby on rails 如果条件为真,则显示文本,ruby-on-rails,ruby,if-statement,Ruby On Rails,Ruby,If Statement,我试图让文本“Tags:”仅在标记存在时显示,因此我在视图中执行了以下操作: <% if @tags.present? %> <%= puts "Tags:"%> <% end %> 我正试图这样做,当一篇文章有标签时,标签列表前面会出现“标签:”一词,而当一篇文章没有任何标签时,标签列表前面不会出现“标签:”一词 现在只会导致“标签:”出现在每篇文章上 @tags被定义为什么?您想在哪里检查它是否存在 你想要如果@tags.nil?什
<% if @tags.present? %>
<%= puts "Tags:"%>
<% end %>
我正试图这样做,当一篇文章有标签时,标签列表前面会出现“标签:”一词,而当一篇文章没有任何标签时,标签列表前面不会出现“标签:”一词
现在
只会导致“标签:”出现在每篇文章上 @tags被定义为什么?您想在哪里检查它是否存在
你想要
如果@tags.nil?
什么是@tags的定义?您想在哪里检查它是否存在
是否希望
如果@tags.nil?
在视图中不使用puts——puts会将文本转到控制台。这将解决它:
<% if @tags.present? %>
<%= "Tags:"%>
<% end %>
这是假设您有一行类似于:
has_many :article_tags
has_many :tags, through: :article_tags
我假设你是根据你的二传手做的
我假设这是一种多对多的关系,但看起来您使用的是has\u many:通过,而不是has\u和属于多。这有什么原因吗?如果您使用的是has\u和\u属于\u many,您应该能够做到这一点:
has_and_belongs_to_many :tags
def tag_tokens=(tags_delimited)
self.tags = []
tags_delimited.split(",").each do |string|
self.tags << Tag.find_or_create_by_name(name: string)
end
end
具有多个标记,并且属于多个标记
def tag_标记=(标记_分隔)
self.tags=[]
标记以U分隔。拆分(“,”)。每个do字符串|
self.tags在视图中不使用puts——puts会将文本转到控制台。这将解决它:
<% if @tags.present? %>
<%= "Tags:"%>
<% end %>
这是假设您有一行类似于:
has_many :article_tags
has_many :tags, through: :article_tags
我假设你是根据你的二传手做的
我假设这是一种多对多的关系,但看起来您使用的是has\u many:通过,而不是has\u和属于多。这有什么原因吗?如果您使用的是has\u和\u属于\u many,您应该能够做到这一点:
has_and_belongs_to_many :tags
def tag_tokens=(tags_delimited)
self.tags = []
tags_delimited.split(",").each do |string|
self.tags << Tag.find_or_create_by_name(name: string)
end
end
具有多个标记,并且属于多个标记
def tag_标记=(标记_分隔)
self.tags=[]
标记以U分隔。拆分(“,”)。每个do字符串|
self.tags通过sgrif检查答案,它包含了很多优点。回答您的主要问题:
在erb(Rails中用于视图模板的“语言”)中,您可以使用
将一些Ruby代码的结果插入到视图模板中
当您正在执行以下操作时:
<%= puts "Tags:" %>
或者,由于您没有在Ruby中执行任何操作,您可以使用:
<% if @tags.present? %>
<%= "Tags:"%>
<% end %>
<% if @tags.present? %>
Tags:
<% end %>
标签:
检查sgrif的答案,它包含了很多好的观点。回答您的主要问题:
在erb(Rails中用于视图模板的“语言”)中,您可以使用
将一些Ruby代码的结果插入到视图模板中
当您正在执行以下操作时:
<%= puts "Tags:" %>
或者,由于您没有在Ruby中执行任何操作,您可以使用:
<% if @tags.present? %>
<%= "Tags:"%>
<% end %>
<% if @tags.present? %>
Tags:
<% end %>
标签:
我在上面的帖子中进行了扩展。顶部代码块导致“Tags:”字符串没有出现在任何帖子上。您正在控制器中设置@Tags,对吗?如果是这样的话(你应该再次使用uncler@tags.nil?而不是If@tags.present?),那么你调用来设置它的方法工作不正常,你应该看一看。另外,你关于使用@tags.nil?的评论:你需要使用uncler,而不是If。打印标签:如果未设置@Tags,这与您想要的正好相反。对不起,我不明白我必须在控制器中设置@Tags的原因。这是我的代码:我已经更新了我的答案,以尽可能地帮助你使用你提供的代码,但听起来你的关系有一个相当时髦的设置。我在上面的帖子中进行了扩展。顶部代码块导致“Tags:”字符串没有出现在任何帖子上。您正在控制器中设置@Tags,对吗?如果是这样的话(你应该再次使用uncler@tags.nil?而不是If@tags.present?),那么你调用来设置它的方法工作不正常,你应该看一看。另外,你关于使用@tags.nil?的评论:你需要使用uncler,而不是If。打印标签:如果未设置@Tags,这与您想要的正好相反。对不起,我不明白我必须在控制器中设置@Tags的原因。这是我的代码:我已经更新了我的答案,以尽我所能帮助你使用你提供的代码,但听起来你的关系有一个相当时髦的设置。