这是一个愚蠢的问题,但即使经过一些研究,我也无法解决这个问题。我的一个视图中有一个表单,允许我从访问者那里获得值。我正在尝试在控制器中的表单中提交该值。我不明白为什么,但似乎我用这段代码得到的唯一值是 0..我想我没有使用正确的合成器。这是我从视图中的代码:
.mybox
%p Tentative de vote.
= @useful_tool.nbofrate
= @useful_tool.nbtotal
= @useful_tool.newrate
= form_for(@useful_tool) do |f|
= f.select :newrate, [['1 étoile', 1],['2 étoiles', 2],['3 étoiles', 3],['4 étoiles', 4],['5 étoiles', 5]]
= f.submit
这是我来自控制器的代码:
def update
@useful_tool = UsefulTool.find_by_slug!(params[:id])
@useful_tool.nbofrate = @useful_tool.nbofrate + 1
value = params[:newrate]
@useful_tool.nbtotal += value.to_i
@useful_tool.rating = @useful_tool.nbtotal / @useful_tool.nbofrate
update! { url_for(action: "index") }
end
因为明显的价值必须是零,我不明白为什么。任何帮助将不胜感激。多谢。
尝试将to_s.to_d
与nbtotal和value一起使用。
或者您可以显式检查 nil