Отсутствует шаблон после link_to_remote - PullRequest
2 голосов
/ 09 октября 2009

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

Я указываю полный путь к моей части (файл 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?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 октября 2009

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

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

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

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

def my_method create something

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

По маршруту RJS вы можете создать файл app / views / resource / my_method.rjs и заполнить его

page.replace_html :body, :partial => '/shared/partials/my_partial_form'
0 голосов
/ 09 октября 2009

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

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