1

簡単なtodolistを作成します。リストインデックスビューのリストに属するタスクの説明を表示しようとしています。現在のコードでは、 list.tasksを使用すると、リストに属するすべてのタスクからすべてのデータフィールドが表示されますが、必要なのはtask.descだけですtask.descのみを表示したいことをレールに具体的に伝えるにはどうすればよいですか?

lists / 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

問題を正しく理解している場合は、リストの反復に使用した.eachを使用できます。

<% list.tasks.each do |task| %>
  <%= task.desc %><br />
<% end %>
于 2012-12-22T17:31:37.857 に答える
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 に答える