【问题标题】:Ruby on Rails 5 : I'm getting a hash instead of an array when submiting a formRuby on Rails 5:提交表单时我得到的是哈希而不是数组
【发布时间】:2017-08-02 21:41:26
【问题描述】:

我有一个带有多个复选框的表单,其中的复选框是产品的类别。

一个产品可以属于一个或多个类别,一个类别可以有一个或多个产品。

我在 ruby​​ on rails 5 中使用 has_many :through 关联

当我提交带有这些复选框的表单时:

 <div class="field">
  <h5>Category</h5>
  <% Category.all.each do |c| %>
    <%= check_box_tag "product[category_ids][] ", c.id, product.category_ids.include?(c.id) %>
      <%= c.name %> <br/>
  <% end %>

这是作为参数传递的:

"product"=>{"name"=>"Pencil", "category_ids"=>[{" "=>"1"}, {" "=>"2"}]}

但我真正需要的是这样的:

 "product"=>{"name"=>"Pencil", "category_ids"=>["1", "2"]}

我需要一个数组而不是哈希数组。

我怎样才能得到那个数组?

这是我的产品控制器中的主要内容:

def create
    @product = Product.new(product_params)

    respond_to do |format|
      if @product.save
        format.html { redirect_to @product, notice: 'Product was successfully created.' }
      else
        format.html { render :new }
      end
    end
  end
  def product_params
      params.require(:product).permit!
  end

感谢您的帮助!

【问题讨论】:

  • 您的代码看起来不错.. 尝试在 [] 之后删除多余的空间 "product[category_ids][] "
  • 谢谢!!!解决了这个问题。谢谢你,我如何在stackoverflow中奖励你的回答?
  • 酷..我会添加这个作为答案

标签: ruby-on-rails ruby ruby-on-rails-5


【解决方案1】:

尝试删除 Rails 表单复选框语法 check_box_tag 上的多余空间

在没有多余空格的情况下将“product[category_ids][]”更新为“product[category_ids][]”

<%= check_box_tag "product[category_ids][]", c.id, product.category_ids.include?(c.id) %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2011-03-06
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多