【问题标题】:Wrong value from a form in a controller控制器中表单的错误值
【发布时间】:2012-12-11 13:18:48
【问题描述】:

这是一个愚蠢的问题,但即使经过一些研究,我也无法解决这个问题。 在我的观点中,我有一个表格,可以让我从访问者那里获得价值。 我试图在我的控制器中以表单形式提交该值。我不明白 为什么,但似乎我用这段代码得到的唯一值是 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

因为显然 value 必须是 nil 我不明白为什么。 任何帮助都会非常感激。非常感谢。

【问题讨论】:

    标签: ruby-on-rails forms view controller null


    【解决方案1】:

    尝试将to_s.to_d 与 nbtotal 和 value 一起使用。

    或者你可以明确地检查 nil

    【讨论】:

    • 感谢您的回答。但我得到:“未定义的方法 `to_d' 用于“:String”。证明我得到的价值是零。检查 nil 将不起作用,因为当我提交仅包含 1 个数据的表单时调用了控制器:此值。所以它不能为零,我需要它。我尝试获取值的方式一定有错误...
    • 其实可以设置不同的类型转换如 Array: to_a Float: to_f Integer: to_i String: to_s
    • 谢谢,实际上类型转换“to_s”有效。我没有收到任何错误,但我得到的值为 0。所以我的问题还没有解决 ^^"...我不知道为什么我在提交表单时没有得到好的值。我应该得到 1、2、3、4 或 5 没有别的......
    • 所以我发现我的错误在哪里: value = params[:newrate] 必须是: value = params[:useful_tool][:newrate].to_i 否则控制器找不到“新率”数据。并且“.to_i”用于将字符串转换为整数,如先前答案中所述。感谢大家。希望它可以帮助别人。
    • 如果您发现任何帖子对您有帮助.. 请通过给予宝贵的投票来鼓励 :).. 很高兴这篇文章对您有所帮助..
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多