2009-10-09 2 views
2

Я использую link_to_remote для обновления частичной части на моей странице. Проблема в том, что Rails не находит моего частичного.Отсутствует шаблон после link_to_remote

Я, указав полный путь к моему частичному (файл html.erb) в методе контроллера:

def my_method 
create something 

render :partial => '/shared/partials/my_partial_form', :layout => 'false' 
end 

Я знаю, что метод контроллера получает удар, так как «что-то» будет создаваться. Я получаю сообщение об ошибке "Template missing [:controller_name]/[:method_name].js.erb not found".

Может кто-нибудь объяснить, почему Rails, похоже, использует путь по умолчанию к js.erb?

Заранее благодарен!

+0

Имея эту проблему в минуту. Вы когда-нибудь получали решение? –

ответ

2

Rails отвечает на формат JS. render: partial не считается обратным вызовом 1-го действия для каждого действия. Без надлежащего вызова рендеринга или перенаправления Rails вызовет рендер с аргументами по умолчанию на основе формата, контроллера и действия.

Render: частичный просто возвращает текст вызывающему, он не создает ответ. В этом случае частичная часть отображается в HTML, но с этим ничего не делается. Постскриптум : layout => false опция является излишней при рендеринге частичного.

Вы хотите использовать рендер: обновить или файлы RJS, чтобы сделать то же самое через шаблон.

Предполагая, что вы хотите заменить все веб-страницы, короткая версия, это сделать что-то вроде этого:

def my_method create something 

    render :update do |page| 
    page.replace_html :body, :partial => '/shared/partials/my_partial_form'  
    end 
end 

Going маршрут Rjs вы можете создать приложение/просмотров/ресурс/файл my_method.rjs и заполнить его с

page.replace_html :body, :partial => '/shared/partials/my_partial_form' 
+1

Благодарим за отзыв. Я использовал link_to_remote для обновления div в другом месте этой же базы кода. В тех случаях, пока последняя строка в методе визуализировалась: частичное все было в порядке. Я очень хочу понять, чем это отличается. Возможные виновники: Наследование контроллера плагин на странице Я пробовал ваше первое предложение, и оно возвращает ту же ошибку. На самом деле все, что я пробовал, оставляет меня в одном и том же месте. Замена: partial с redirect_to root_url также не дает разных результатов. Я вижу, что это потому, что рельсы не признают директиву действительной. – 2009-10-09 02:54:36

+0

Когда Rails отвечает на запрос JS, он отправляет javascript для запуска в браузере. Все методы ruby ​​возвращают результат последнего утверждения. redirect_root_url не изменяет формат запроса, поэтому, если вы явно не указали шаблон для создания Javascript, Rails отобразит значение по умолчанию. Это объясняет, почему ваша ошибка не изменяется с помощью redirect_root_url – EmFi

+0

Это не работает для меня. Это сработало для вас лоджия? –

0

Попробуйте удалить/перед общим.

render :partial => 'shared/partials/my_partial_form', :layout => 'false' 
+0

спасибо. попробовал это. в этот момент мне бы хотелось, чтобы он сказал мне еще одну ошибку - любой другой. Возможные источники разницы: Наследование контроллера -i've попробовал поставить метод в родительском контроллере и в дочернем контроллере. такая же ошибка - на странице есть плагин для обработки нескольких форм на одной странице. – 2009-10-09 03:08:29

+0

и my_partial_form называется _my_partial_form.html.erb? – Tilendor

Смежные вопросы