ruby-on-rails - 在 View 中扩展 html 类的推荐模式是什么?

标签 ruby-on-rails ruby ruby-on-rails-3 helper

我有以下<tr>我的表格中的标签

<% if user.company.nil? %>
  <tr class="error">
<% else %>
  <tr>
<% end %>
  <td><%= user.name %></td>
</tr>

我想添加另一个 if 语句

<% if user.disabled? %>
  <tr class="disabled">
<% end %>

所以当其中两个语句是true时我希望收到:

<tr class="error disabled">

我知道我应该将其移至帮助程序,但如何为扩展类编写良好的 case 语句取决于此语句?

最佳答案

def tr_classes(user)
  classes = []
  classes << "error" if user.company.nil?
  classes << "disabled" if user.disabled?
  if classes.any?
    " class=\"#{classes.join(" ")}\""
  end
end

<tr<%= tr_classes(user) %>>
  <td><%= user.name %></td>
</tr>

但是好的风格是:

def tr_classes(user)
  classes = []
  classes << "error" if user.company.nil?
  classes << "disabled" if user.disabled?
  if classes.any?   # method return nil unless
    classes.join(" ")
  end
end

<%= content_tag :tr, :class => tr_classes(user) do -%> # if tr_classes.nil? blank <tr>
  <td><%= user.name %></td>
<% end -%>

关于ruby-on-rails - 在 View 中扩展 html 类的推荐模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027128/

相关文章:

javascript - 将 html 数据属性添加到 simple_forms 输入

ruby-on-rails - Rails 匹配 validates_format_of 数字 1-9

ruby-on-rails - Capybara 不会填写表单字段(尽管它会找到它们)

ruby-on-rails - 目录 : What steps are you going through in the preparation phase of application development?

ruby-on-rails-3 - 将单个附件用于回形针中的视频/图像

javascript - 从 Rails 3 中的 application.js 访问 current_user 变量

ruby-on-rails - 无法在 Heroku 上创建表——迁移在本地工作但在 Heroku 上失败

mysql - 获取一张 table 售出的门票总数。 rails

ruby-on-rails - 如果模型已经存在,如何仅为 Controller 和 View 制作脚手架?

ruby-on-rails - Rails 应用程序对本地网络不可见