【问题标题】:How to pass parameters in correct way from view to controller in Ruby on Rails如何在 Ruby on Rails 中以正确的方式将参数从视图传递到控制器
【发布时间】:2020-04-03 00:09:53
【问题描述】:

我有一段时间使用 Rails,但我遇到了一个问题,不知道如何解决。

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

我需要将 x_yw_attributes 作为参数的一部分从视图传递到控制器,但我不知道如何在 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>

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

【问题讨论】:

    标签: html ruby-on-rails view controller erb


    【解决方案1】:

    您可以查看更详细的文档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 中存储信息。如果您想这样做,请将 :id 添加到 x_yw_attributes 以表明您想要更新而不是创建它们。

    您还可以查看 Ryan B 的 nested_form gem,他结合了一些 javascript 代码,让生活更轻松

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 2013-03-24
      • 2012-06-29
      相关资源
      最近更新 更多