Как правильно передать параметры из представления в контроллер в Ruby на Rails - PullRequest
0 голосов
/ 03 апреля 2020

Я некоторое время работал с Rails, но у меня есть проблема, и я не знаю, как ее решить.

Есть модель X и модель YW, а между ними - общая модель

Мне нужно передать от вида к контроллеру как часть параметров X x_yw_attributes, но я не знаю, как stabli sh правильный путь имени атрибута в 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>

Так что дайте мне знать, как мне написать атрибут имени, или вам нужно больше Информация. Спасибо за помощь.

1 Ответ

1 голос
/ 03 апреля 2020

Вы можете проверить документ более подробно 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, чтобы указать, что вы хотите обновить, а не создавать их.

Вы также можете проверить nested_form gem от Райана Б., который он комбинирует с некоторыми javascript код для облегчения жизни

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...