Наблюдаемое поведение в настоящее время связано с тем, что , проходящее по значению , означает, что копия значения (новое целое число со значением) фактически передается функции.
Вы должны пройти по ссылке. Для этого функция changeValue будет выглядеть так:
void changeValue(int& value)
Остальная часть кода останется прежней.
Передача переменной по ссылке означает ту же int value
, объявленную в main
передается функции changeValue
.
В качестве альтернативы вы можете передать указатель на value
на функцию changeValue
. Это, однако, потребует изменений в том, как вы также вызываете функцию.
int main()
{
int value = 5;
changeValue(&value);
...
return 0;
}
void changeValue(int* value)
{
*value = 6;
}
Согласно документации , любые параметры, которые не распознаются url_for
, передаются в модули Route, поэтому теоретически ваш код должен работают, если ваш параметр не переопределяет один из параметров по умолчанию, который он ищет.
Однако есть хэш : overwrite_params
, который вы предположительно можете передать:
redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' }
Надеюсь, это поможет.