americandog1993の日記

プログラマー歴半年のメモ

.buildで空要素ができている

<%= @now.year %>年<%= @now.month %>月の支出:<%= @total %>円
  <%= form_for [@user, @user.kakeibos.build] do |f| %>
  <%= f.label :spending %>
  <%= f.number_field :spending %>
  <%= f.submit %>
  <% end %>
<ul>
<% @user.kakeibos.each do |k| %>
    <li>
      <%= k.spending %>円
    </li>
<% end %>
</ul>
<%= link_to "logout", logout_path %>

なんかこうしたら空の

  • が一個できてしまう。

    f:id:americandog1993:20170506234541p:plain

    こんな感じ。円だけのリストが一個ある。

    どうも、

    <%= form_for [@user, @user.kakeibos.build] do |f| %>

    の部分で@user.kakeibosに一個空のkakeiboができてしまうっぽい。

    <ul>
    <% @user.kakeibos.each do |k| %>
        <% if k.spending %>
        <li>
          <%= k.spending %>円
        </li>
      <% end %>
    <% end %>
    </ul>

    こうやって中身がfalseのものを除外することでとりあえず解決した。
    コードがすごく汚いのは自覚している。