link_to_remote против рендера - PullRequest
       11

link_to_remote против рендера

4 голосов
/ 15 октября 2008

Можно ли перезагрузить страницу, которая была загружена через link_to_remote? Я делаю это в моем контроллере:

def create
 if captchas_verified
  do_something
 else
  render :action=>'new'
end

Но когда капча неверна, она не отображает форму, которая находится внутри нового шаблона. Кстати, в журнале веб-сервера он показывает, что шаблоны были обработаны.

Спасибо!

ОБНОВЛЕНО: Сегодня я изменил рендер на:

render(:update) { |page| page.call 'location.reload' }

Но это заставляет меня обновить страницу, которая вызвала link_to_remote, а не страницу, которая была открыта через link_to_remote

ОБНОВЛЕНО 2: я исправил с помощью page.replace_html "mydiv",: part => "new" вместо page.call 'location.reload'

Ответы [ 2 ]

4 голосов
/ 15 октября 2008

Вам нужно render :update, а не render :action.

Я все время так делаю. Подобно ответу от jdl, вы можете использовать встроенные rjs (не знаю, подходит ли это термин) для отображения страницы.

render(:update) do |page|
  page.replace_html("div_to_update", :partial => "name_of_template", :object => @object)
  page << "alert('javascript can be inserted here as well')"
end
1 голос
/ 15 октября 2008

Что-то вроде этого должно делать то, что вы хотите.

render :update do |page| page << 'window.location.reload()' end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...