Ruby on Rails — добавление переменной в params[]

Как в контроллере добавить переменную в конце params[]?

Если я попробую это, я получу ошибку: params[:group_] + variable

Как это сделать?


Редактировать по запросу

Хорошо, у меня есть форма, которая устанавливает группы переключателей с такими именами:

группа_01DRN0

Очевидно, у меня есть разные группы в форме (group_01AAI0, group_01AUI0 и т. д.), и значение устанавливается в соответствии с переключателем, выбранным внутри группы:

Переключатель «group_01DRN0» может иметь значение «21», «22» или «23», переключатель «group_01AAI0» может иметь значение «21», «22» или «23» и т. д.

В БД у меня есть каждый код (01DRN0, 01AAI0, 01AUI0 и т. д.), поэтому я хочу выбрать их из БД и повторить значение параметров, чтобы я мог получить значение группы переключателей, я пробовал это безуспешно:

@codes=Code.get_codes
for c in @codes
  @all=params[:group_] + c.name
end

Спасибо.


person miligraf    schedule 14.05.2010    source источник
comment
Код вашего примера перезаписывает @all с каждой итерацией цикла...   -  person Larry K    schedule 14.05.2010


Ответы (2)


params выглядит как хэш, но на самом деле это не так. Поэтому, если вам нужно «дополнить» параметры при работе с входящими данными в контроллере, придумайте новую структуру данных, которая включает либо параметры, либо их элементы.

Добавлен:

Может быть, вы ищете

@codes=Code.get_codes
@all = []    
for c in @codes
  @all << params["group_#{c.name}"]
end
person Larry K    schedule 14.05.2010
comment
Я не знал, что вы можете использовать group_#{c.name} внутри params[]! Но это помогло, спасибо! - person miligraf; 14.05.2010

p = params
p[:new_param_name] = new_param_value

У меня работает (рельсы 3.2). Примечание: использование p вместо изменения params позволяет избежать изменения исходных параметров.

person htaidirt    schedule 29.08.2012