ruby-on-rails - Ruby 中的案例陈述

标签 ruby-on-rails ruby case

<分区>

我正在尝试创建一个 Case 语句来确定一个属性是否存在,如果存在则显示一个链接。

<% case %>
<% when @team_member.twitter? %>
  <%= link_to '', @team_member.twitter, target: '_blank', class: 'icon-twitter' %
<% when @team_member.facebook? %>
  <%= link_to '', @team_member.facebook, target: '_blank', class: 'icon-facebook' %>
<% end %>

显然这是行不通的,我想澄清的是

1) 在最初的案例之后我要声明什么,我看到的例子有类似 <% case a %> 的东西或 <% case object %> , 对吗?
2) 如何检查对象是否具有属性?

所以我想在这里做的是说什么时候 :team_member填充其 twitter 属性然后显示链接,与 facebook 属性相同。

感谢任何帮助

最佳答案

  1. 没错,case 需要一个目标表达式来计算。 编辑:@mbratch 在评论中指出 case 可以在没有目标表达式,如前所述 here .这使得 caseif/else 结构一样工作。
  2. 如果您的对象是 ActiveRecord 模型,您可以使用 has_attribute?(attr_name)

在您的代码中,使用 if 语句可能更容易,因为如果用户设置了这些属性,您可能希望同时显示 Twitter 和 Facebook 链接。

<% if @team_member.has_attribute?(:twitter) %>
  <%= link_to '', @team_member.twitter, target: '_blank', class: 'icon-twitter' %>
<% end %>
<% if @team_member.has_attribute?(:facebook) %>
  <%= link_to '', @team_member.facebook, target: '_blank', class: 'icon-facebook' %>
<% end %>

关于ruby-on-rails - Ruby 中的案例陈述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22044149/

相关文章:

javascript - rails : Restricting pure javascript in the asset pipeline to specific views

ruby-on-rails - 在 Rails 中使用 Sunspot 和 Solr 连接被拒绝

ruby-on-rails - 表单中的 Button_to 标记关闭表单

mysql - 使用 NOT IN 和 UNION 语句构建 MyBatis 查询

mysql - 案例陈述 :Operand should contain 1 column(s)

MySql - 从最大内例中排除默认日期

ruby-on-rails - RVMSUDO 不使用环境变量

ruby-on-rails - 回形针 - 每个样式的默认样式?可能的

ruby-on-rails - 如何将 erb 中的 Rails 整个应用程序转换为 haml

ruby - 使用 Jekyll,在首页和分页显示最新帖子