1

创建一个简单的 todolist。试图在列表索引视图中显示属于列表的任务的描述。使用当前代码,当我使用list.tasks时,所有数据字段都会从属于列表的所有任务中显示,但我只想要task.desc。我如何明确告诉 Rails 我只希望 task.desc 显示?

列表/index.html.erb

<h1>My Lists</h1>

        <%= link_to 'New List', new_list_path, class: "btn btn-primary" %>

        <h3>Name | Time Ago</h3>

    <% @lists.each do |list| %>

        <h4><%= link_to list.name, list %></td></h4>

        <% if list.created_at > Time.now.beginning_of_day %>
        <%="#{time_ago_in_words(list.created_at)} ago"%>
        <% else %>
        <h6><%= list.created_at.strftime("%b %d, %Y") %></h6>

        <%= list.tasks %><br />
            <% end %>


        <%= link_to 'Edit', edit_list_path(list) %> | 
        <%= link_to 'Destroy', list, method: :delete, data: { confirm: 'Are you sure?' } %>
        <br />
    <% end %>
    <br />
4

2 回答 2

0

获取每个描述的数组

list.tasks.collect(&:desc)

& 是进入 Ruby 1.9 的 Rails 快捷方式 - 它说,将 & 之后的方法应用于集合的每个成员。

我想你可能想要

list.tasks.collect(&:desc).join("<br />").html_safe

:)

(您可能不需要 html_safe,它用于表明您故意将标记放在字符串中并且您不希望它被转义)

如果这对您有用,我会将其从视图中取出并将其放入列表类中。如在

def current_tasks
  tasks.collect(&:desc)
end

这意味着您可以对此进行测试并在以后重用它。

于 2012-12-22T17:37:49.170 回答
0

如果我正确理解您的问题,您可以使用用于列表迭代的 .each:

<% list.tasks.each do |task| %>
  <%= task.desc %><br />
<% end %>
于 2012-12-22T17:31:37.857 回答