Rails问题与嵌套哈希参数的访问

时间:2015-08-13 19:45:12

标签: ruby-on-rails forms parameter-passing strong-parameters

我在视图中使用了以下表格

<%= form_for (@account) do |f| %>
<%= f.label :comments,"Comments" %>
<%=f.text_area :comments %>
<%= f.submit "Confirm",:name=>"conf" %>
<%= f.submit "Reject" %>
<% end %>

当我提交表单时,我在更新数据库之前在日志中获得以下哈希

Started PATCH "/accounts/12" for 127.0.0.1 at 2015-08-13 21:31:18 +0200
Processing by UseractionsController#answer_with_comments as HTML
Parameters: {"utf8"=>"✓", "account"=>{"comments"=>"mycomments"}, "conf"=>"Confirm", "id"=>"12"}

我正在尝试访问控制器中注释文本区域中的输入。我试过了

params[:account][:comments]

但它似乎不起作用。任何人都可以给我合适的语法吗?感谢。

修改

这是我的控制器代码。现在if循环返回false并且没有任何内容添加到数据库中,即使提交了某些内容(&#34; mycomments&#34;参见上面的param嵌套哈希)

if params[:bankaccount][:comments]
  @bankaccount.update_attribute(:comments, params[:bankaccount][:comments])
end

2 个答案:

答案 0 :(得分:0)

它只是您视图的适当语法。它假定您的评论模型中包含内容字段。

section.backstage-header

您还必须在帐户模型中声明嵌套属性,并且您的参数散列应该不同。

您应该观看这两个Railscast part 1part 2,以了解有关嵌套属性的更多信息。

答案 1 :(得分:0)

由于您将强参数作为标记提及,因此您可能希望以不同的方式构建它。

private
def account_params
  #the permit method might need to be altered depending on your model and view
  params.require(:account).permit(:comments) 
end

您可以在控制器中的其他位置执行此操作:

@bankaccount.update_attributes(account_params)

请阅读:http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters