如何在Ruby on Rails中以正确的方式将参数从视图传递到控制器

问题描述 投票:0回答:1

我花了一些时间在Rails上工作,但是我有一个问题,不知道如何解决。

有一个模型X和一个模型YW,它们之间是一个联合模型

我需要从视图传递到控制器作为x_yw_attributes X的参数的一部分,但我不知道如何在html中稳定属性名称的正确方式。

想法将是这样:

"x" => {
"name"=>"Name 1", "description"=>"Descripción 1", "status"=>"true",
"x_yw_attributes" =>[
            {"yw_id"=>"15", "range"=>"[1,2,3,5]", "payment" => "[2,3,4,5,6,7]"},  
            {"yw_id"=>"17", "range"=>"[1000,2000,3000,5000]", "payment" => "[20,30,40,50,60,70]"},
            {"yw_id"=>"19", "range"=>"[10000,20000,30000,50000]", "payment" => "[200,300,400,500,600,700]"}
           ], 
"categories_ids"=>["", "2", "", "5", "5"]
}

例如,我知道如何使用类别:

<input type="checkbox" name="x[category_ids][]" value="2" checked="checked">
<label for="category_2">Category 2</label>

所以,让我知道我应该如何写name属性,否则我需要更多信息。谢谢帮助。

html ruby-on-rails view controller erb
1个回答
0
投票

您可以更详细地检查文档accepts_nested_attributes_for根据您的问题,我无法确定您要将信息存储在YW还是联合表中?如果要在YW中存储数据,可以先设置accepts_nested_attributes_for :yw,然后将yw_attributes传递给控制器​​。强大的参数类似于:

def x_params
  params.requires(:x).permit(:name, :description, :status, yw_attributes: [:id, :range, :payment, :_destroy])
end

您编写的代码看起来像是将信息存储在join_table中。如果您要这样做,请在x_yw_attributes中添加:id,以指示您要更新而不是创建它们。

您还可以检查Ryan B.的nested_form gem,他结合了一些JavaScript代码以简化生活

© www.soinside.com 2019 - 2024. All rights reserved.