#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
В моем пользовательском интерфейсе edit.html, У меня есть
<input type='text', id='name'></input>
и у меня есть
<p>Name:</p>
У меня есть файл javascript, который будет использовать jQuery для css стиля пользовательского интерфейса:
$('<p></p>').css('margin-left', '20px').insertAfter($('#name'));
Приведенный выше CSS определит, что <p>
элемент будет расположен в 20 пикселей справа от <input>
.
Все в порядке, когда мое приложение сначала загружает edit.html На странице присутствует стиль CSS.
НО, когда проверка модели завершилась неудачей, и в моем контроллере я использую
render :action=>edit
,
функция стиля CSS потеряна;
однако, если мой контроллер использует
redirect_to :action=>edit, :id=>@user
,
стиль CSS присутствует, как и ожидалось.
Почему мой стиль CSS, определенный jquery, теряется, если я использую render :action=>edit
для рендеринга этой страницы. Как от этого избавиться? Я хотел бы использовать render :action=>edit
, пока мой CSS, определенный jQuery, вступает в силу.
Комментарии:
1. Есть ли у вас какие-либо условные javascript-включения / разные макеты с разными файлами JS?
2. Да, в моем js есть логика, согласно которой «если это находится на странице редактирования, то код вступает в силу». Но я перехожу на страницу редактирования, единственное отличие заключается в использовании «render» и «redirect_to», что дает другой результат. Код js, похоже, не вступает в силу, если я использую ‘render’ в моем контроллере, это моя проблема.
3. каково точное условие? Рендеринг и перенаправление выполняют разные действия — перенаправление фактически выполняет действие, тогда как рендеринг просто показывает вид
4. Точное условие — ‘pathEndsWith(‘\d / edit $’)’, в моем js я проверю, является ли это условие истинным или ложным. если это true, следующий код jQuery должен вступить в силу. Итак, как ‘render’, так и ‘redirect_to’ переходят на страницу редактирования, почему ‘render’ приводит к потере функциональности js-кода?