【问题标题】:Rails issue with access of nested hash parameterRails 访问嵌套哈希参数的问题
【发布时间】:2015-08-13 19:45:11
【问题描述】:

我在 Rails 中的视图中有以下表单

<%= 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"}

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

params[:account][:comments]

但它似乎不起作用。谁能给我适当的语法?谢谢。

编辑

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

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

【问题讨论】:

  • 请解释当您尝试执行此操作时会发生什么params[:account][:comments] 不会得到mycomments 作为输出。也分享你的动作控制器代码。
  • 你可能想试试params['account']['comments'](哈希的键是字符串而不是符号)

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


【解决方案1】:

这只是适合您视图的语法。它假定您的 Comment 模型上有 content 字段。

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

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

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

【讨论】:

    【解决方案2】:

    由于您提到强参数作为标签,您可能希望以不同的方式构建它。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多