我偶尔不得不根据条件向html元素添加一个类.问题是我想不出一个干净的方法.以下是我try 过的一个例子:

<div <%= if @status = 'success'; "class='ok'"; end %>>
   some message here
</div>

OR

<% if @status == 'success' %>
   <div class='success'>
<% else %>
   <div>
<% end %>
   some message here
</div>

我不喜欢第一种方法,因为它看起来很拥挤,而且很难阅读.我不喜欢第二种方法,因为筑巢是错误的.把它放在模型里会很好(大约@status.css_class),但那不属于那里.大多数人都做什么?

推荐答案

我使用第一种方法,但语法稍微简洁一些:

<div class="<%= 'ok' if @status == 'success' %>">

虽然通常你应该用布尔值true或数字记录ID表示成功,用布尔值falsenil表示失败.这样你就可以测试你的变量了:

<div class="<%= 'ok' if @success %>">

如果要在两个类之间进行 Select ,使用三元?:运算符的第二种形式很有用:

<div class="<%= @success ? 'good' : 'bad' %>">

最后,你可以使用Rail的record tag helpers,比如div_for,它会根据你给出的记录自动设置你的ID和等级.给定id为47的Person:

# <div id="person_47" class="person good">
<% div_for @person, class: (@success ? 'good' : 'bad') do %>
<% end %>

Ruby-on-rails相关问答推荐

是否从已转换为字符串的数组中提取符号?

Ruby on Rails 身份验证:设计注册不起作用

在 Rails 中进行 Http 基本身份验证

URL 中的 Rails slugs - 使用 Active Record Model Post 的 Title 属性而不是 ID

从 Rails 生成 PDF

跳过模型中的某些验证方法

如何在生产中部署 resque worker?

我如何存根 find_each 以在 rails 3 中进行 rspec 测试

控制器规格与请求规格?

Rails data-disable-with re-enable 按钮

Ruby on Rails:有条件地显示部分

通过字符串获取 ActiveRecord 对象的属性

rmagick 和 OS X Lion

Rails 中是否有 HTML 安全截断方法?

Rails - 具有空数组的强参数

登录delay_job?

如何将 ActionMailer default_url_options 的 :host 动态设置为请求的主机名?

如何检测导致 Rake 中的弃用警告的原因

通过get in rails传递参数数组

Vagrant上的Rails 4.2服务器端口转发不起作用