【问题标题】:'stringify_keys' error when trying to use a form field尝试使用表单字段时出现“stringify_keys”错误
【发布时间】:2012-02-13 17:25:17
【问题描述】:

我在 form_for 中有以下内容:

  = form_for @activity do |f|
    .field
      = label :comment, :comment
      = text_area :comment, :comment, :rows => 4

我没有调用 f.label 或 f.text_area,因为注释是一个单独的模型,我将它单独保存。上面的代码可以正常工作,但是当@activity 上的验证失败时,评论就会被删除。我希望在@activity 验证失败时重新填充评论字段,因此我尝试了以下操作:

  = form_for @activity do |f|
    .field
      = label :comment, :comment
      = text_area :comment, :comment, :value => @comment, :rows => 4

在控制器动作中使用这一行:

@comment = Comment.new(params[:comment][:comment])

但是,我收到以下错误:

undefined method `stringify_keys' for "hello":String

上面显示的控制器中的@comment 分配失败。

这是怎么回事?

错误后的参数包含以下内容:

 "comment"=>{"comment"=>"hello"}

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    问题是Comment#new 需要一个哈希值,其键对应于评论的属性,但你给它的是params[:comment][:comment],它的值是一个字符串(在本例中为"hello")。我怀疑这是你想要的:

    @comment = Comment.new params[:comment]
    

    【讨论】:

    • 当我这样做时,评论会重新填充为“#<0xc25c25c>
    • <0xc25c25c>
    • &gt;&gt;
    猜你喜欢
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多