这是我的第一个问题,我是Rails的新手。 我目前陷入了一些相当简单的事情,但我找不到出路。 在我的cost / index / html.erb文件中 我有以下几行:
<tbody>
<% @costs.each do |cost| %>
<tr>
<td><%= cost.mini_description %></td>
<td><%= cost.description %></td>
<td><%= cost.quantity %></td>
<td><%= cost.rate %></td>
<td><%= cost.total %></td>
<td><%= cost.total_of_all_rows %></td>
<td><%= cost.job %></td>
<td><%= link_to 'Show', cost %></td>
<td><%= link_to 'Edit', edit_cost_path(cost) %></td>
<td><%= link_to 'Destroy', cost, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
我正在尝试计算费率和数量,以便产生总金额。结果,我创建了以下变量,我已经调用它但是我被抛出错误。我哪里出错?:
<tbody>
<% @costs.each do |cost| %>
<tr>
<td><%= cost.mini_description %></td>
<td><%= cost.description %></td>
<td><%= cost.quantity %></td>
<td><%= cost.rate %></td>
<%= cost_var = cost.quantity * cost.rate %>
<td><%= cost.total, cost_var %></td>
<td><%= cost.total_of_all_rows %></td>
<td><%= cost.job %></td>
<td><%= link_to 'Show', cost %></td>
<td><%= link_to 'Edit', edit_cost_path(cost) %></td>
<td><%= link_to 'Destroy', cost, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</tbody>
任何建议都将不胜感激。
*
感谢所有贡献的人。
在我的模型中,我把
def cost_var
quantity * rate
end
在我看来,我打电话给
<td><%= cost.total%><%=cost.cost_var%></td>
我的问题是,当我搭建支架时,我的数量和费率类型是字符串。我必须通过在我的模型中添加.to_f来改变它:
def cost_var
quantity.to_f * rate.to_f
end
现在它终于奏效了!感谢@Iceman和@Micah
答案 0 :(得分:2)
处理此问题的最佳方法是向模型添加方法
def quantity_rate
quantity * rate
end
然后在你的视图中使用它,就像其他人一样。
<%= cost.quantity_rate %>
答案 1 :(得分:0)
您希望尽可能避免在ERB文件中进行计算(请阅读:始终)。尽可能多地在模型中进行计算,并在控制器中执行任何操作。对于这种特殊情况,我会在Cost
模型中创建一个名为cost_var
的方法,如下所示:
def cost_var
quantity * rate
end
然后通过cost.cost_var
在ERB文件中调用它。这样,您就无法在视图页面中执行计算。
除了从您的观点中提取计算外,如果我没有弄错,<%= cost.total, cost_var %>
是无效的行。您是否尝试显示以下内容:50,35
?如果是这样,你需要做<%= cost.total %>,<%= cost_var %>