.replace()
возвращает новую строку (она не изменяет существующую строку), поэтому вам потребуется:
answer_form = answer_form.replace(/#/g, question_num);
Вы, вероятно, также должны сделать question_num
строкой, хотя автоматические преобразования типов, вероятно, справятся с этим. для вас.
Рабочий пример: http://jsfiddle.net/jfriend00/4cAz5/
К вашему сведению, в Javascript строки являются неизменяемыми - существующая строка никогда не изменяется. Таким образом, любой метод, который вносит изменения в строку (например, concat
, replace
, slice
, substr
, substring
, toLowerCase
, toUpperCase
и т. Д.) ВСЕГДА возвращает новую строку .
Похоже, вы запутались в том, как работает маршрутизация Rails. Этот код:
redirect_to :controller=>'groups',:action=>'invite',:group_id=>@group_member.group_id
создает URL-адрес, который выглядит примерно так / groups / Invite? Group_id = 1
.
Без сопоставления в вашем routes.rb
маршрутизатор Rails сопоставляет это действие показать
, а не пригласить
. Часть приглашения
URL-адреса отображается в params [: id]
, и когда он пытается найти эту запись в базе данных, он терпит неудачу, и вы получаете сообщение, которое вы нашли.
] Если вы используете маршруты RESTful, у вас уже есть строка map.resources
, которая выглядит следующим образом:
map.resources :groups
Вам нужно добавить настраиваемое действие для приглашения
:
map.resources :groups, :member => { :invite => :get }
Затем измените ссылку на params [: group_id]
в методе #invite
, чтобы использовать только params [: id]
.
Ответ заключается в том, что вы не можете выполнить POST, используя redirect_to
.
Это связано с тем, что redirect_to
просто отправляет в браузер заголовок перенаправления HTTP 30x, который, в свою очередь, ПОЛУЧАЕТ целевой URL, а браузеры выполняют только GET при перенаправлениях