AlphaB
AlphaB

Reputation: 133

Ruby on Rails: wrong argument type nil (expected Fixnum)

I'm getting strange error

ActionView::Template::Error (wrong argument type nil (expected Fixnum)):

On this line:

<%= (!attach.file_size.nil?) ? "(#{number_to_human_size(attach.file_size.to_i).to_s})": ""  %>

Here's my code:

<% if !pr.attachments.empty? %>
<ul class="attached_files">
  <% pr.attachments.each do |attach| %>
    <li><a href="<%= attach.path_url%> " target="_blank"><%= attach.path_identifier%></a> 
    <%= (!attach.file_size.nil?) ? "(#{number_to_human_size(attach.file_size.to_i).to_s})": ""  %>
    </li>
  <%end%>
</ul>
<% end %>

I don't get where problem is. Help me please. Thanks!

Upvotes: 3

Views: 3470

Answers (1)

pilcrow
pilcrow

Reputation: 58534

What locale? If not an English locale, try one.

Sounds a lot like this bug, in which a call to number_to_human_size eventually called BigDecimal.new(the_number.to_s).round(...).to_f, and the round()ing failed because of a locale issue. The exception generated exactly matches your error ("wrong argument type nil (expected Fixnum)").

Upvotes: 2

Related Questions