在Ruby中,如何将真/假列显示为复选标记?

时间:2014-12-10 15:48:31

标签: ruby-on-rails ruby boolean

我是Ruby和Rails的新手,所以有人请帮助我
我基本上创建了一个待办事项列表应用程序,在我的桌面上我有一个“完成”列。当我在rails中生成脚手架时,我将列设为“done:boolean”。因此,现在当您创建或编辑任务时,它有一个复选框,您可以选中或取消选中“完成”。因此,在显示完整任务列表的页面上,在“完成”列中,如果选中则表示“True”,如果未选中则表示“False”。所以我的问题是,如何用Checked Box或Unchecked框替换“True”或“False”?我也希望它在“真实”时变灰。提前谢谢!

这是我尝试过的一些代码:

Index.html.erb:
`

<h1 id="title">Project List</h1>



  <table>
    <thead>
      <tr id="headers">
        <th>Title</th>
        <th>Client</th>
        <th>Description</th>
        <th>Hours</th>
        <th>Done</th>
        <th colspan="3"></th>
      </tr>
    </thead>


    <tbody class="col-md-2" id="listItems">
      <% @projects.each do |project| %>
    <tr id="table">
      <td><%= project.title %></td>
      <td><%= project.client %></td>
      <td ><%= project.description %></td>
      <td><%= project.hours %></td>
      <td><%= check_box_tag "project_#{project.id}", "#{project.done}", "#{project.done? ? 'true':'false'", "#{project.done? ? 'true':'false'" %>
      </td>



          <td>
            <span title="Show">
              <%= link_to " #{image_tag('show.png')}".html_safe, project, id:'showButton' %>
            </span>
          </td>


          <td>
            <span title="Edit">
              <%= link_to " #{image_tag('edit.png')}".html_safe, edit_project_path(project), id:'editButton' %>
            </span>
          </td>

          <td>
            <span title="Delete">
              <%= link_to " #{image_tag('destroy.png')}".html_safe, project, id:'destroyButton', method: :delete, data: { confirm: 'Are you sure?' } %>
            </span>
          </td>

        </tr>
      <% end %>
    </tbody>
  </table>

  <br>

  <%= link_to 'New Project', new_project_path, id:"new" %>

`

1 个答案:

答案 0 :(得分:2)

我很惊讶线<% if project.done("true") %>没有抛出错误。

您需要显示一个复选框,因此请使用check_box_tag,然后您可以通过测试项目是否已完成来显示正在检查的内容。

<%= check_box_tag "project_#{project.id}", "#{project.done}", project.done?, disabled: "#{project.done?}" %>

按顺序执行这些操作,此代码将呈现一个复选框:

  1. project_ id_of_project 的ID和名称;和
  2. 取决于项目是否完成,值为0或1;和
  3. 检查项目是否已完成,如果没有,则检查是否未选中;和
  4. 如果项目完成,则禁用该框。
  5. 这个答案中有趣的代码是:

    "#{project.done? ? 'true':'false'"
    

    这是内联if / else。部分project.done?将返回true或false,然后在冒号前输出部分,如果为true,则部分在if之后输出。