【问题标题】:Nested form parent object : got Rack::Utils::KeySpaceConstrainedParams嵌套表单父对象:得到 Rack::Utils::KeySpaceConstrainedParams
【发布时间】:2013-06-13 15:56:22
【问题描述】:

我正在制作一个横幅系统,我可以在其中将横幅上传到 CampaignBanner(带有描述、网址和位置)。

在视图中,我构建了这样的表单:

.page-header
  %h1= t(:'.market_place.title')
.row-fluid
  = form_tag update_dashboard_banners_admin_dashboard_index_path, :method => :put do
    %fieldset
      - @dashboard_banners.each do |dashboard_banner|
        .span3
          = simple_fields_for "dashboard_banners[]", dashboard_banner do |db|
            = db.input :description
            = db.input :target
            = db.input :target_url
            - dashboard_banner.build_banner if dashboard_banner.banner.nil?
            = db.fields_for :banner do |f|
              = f.input :data, :as => :file

    %p= submit_tag t(:'buttons.update'), :class => 'btn btn-primary'

但是当我提交表单时,我得到了

param dashboard_banners 的预期数组(得到 Rack::Utils::KeySpaceConstrainedParams)

例如,在我的第一个 fields_for 中,我为 target_url 命名:

dashboard_banners[21][target_url]

我有我的 id,但在我的横幅的第二个字段中我有:

dashboard_banners[][banner_attributes][数据]

在这里你可以看到我不再有数字 21。

这是否链接到我得到的内部服务器?

【问题讨论】:

  • 同样的问题...您找到解决方法了吗?
  • 好像和这个问题类似stackoverflow.com/questions/11445831/…
  • 以上链接非常有用且内容丰富。它最终帮助我克服了这个问题。此外,一些著名的红宝石学家,包括 Avdi Grimm 和 Ryan Bates,也给出了有用的答案和解释。

标签: ruby-on-rails ruby internal-server-error fields-for


【解决方案1】:

我遇到了同样的错误,然后我将复选框数组的名称重命名为模型名称以外的其他名称。它奏效了。

例如,您将@dashboard_banners 作为您的模型,然后您将复选框称为dashboard_banners[]。我认为这会导致错误。将其命名为 d_banner[] 之类的其他名称,然后在控制器中获取 ii 作为 params[:d_banner]。然后你可以在控制器中循环它或做任何你喜欢的事情。

【讨论】:

    猜你喜欢
    • 2015-10-29
    • 2013-12-18
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 2013-05-28
    • 2014-03-16
    • 2012-11-12
    • 2019-04-14
    相关资源
    最近更新 更多