Как сделать несколько шаблонов из подкаталога в ruby ​​на рельсах - PullRequest
0 голосов
/ 20 августа 2011

У меня есть несколько шаблонов, хранящихся в моей директории просмотра страниц:

Pages / settings / edit_account / basic_info.html.erblatives.html.erb contact.html.erb

У меня естькусок javascript с использованием функции jquery .load.Я в основном позволяю пользователям нажимать на ссылки на странице: базовая информация, родственники, контакт и иметь информацию, которую они должны видеть, чтобы изменения отображались на той же странице без ее обновления.Это прекрасно работает, если я использую этот путь "profile_path", который я указал в своих маршрутах.

Пример:

<script type="text/javascript">
      $("#theBasics").click(function() {
          $("#editProfileContent").load(<%= profile_path %>);
 });

То, что я хочу сделать, хотя настроенобольше этих функций для каждого из шаблонов в pages / settings / edit_account /

Это не работает:

<script type="text/javascript">
      $("#theBasics").click(function() {
          $("#editProfileContent").load(<%= render 'pages/settings/edit_account/basic_info' %>);

      });

Я мог бы создать несколько действий в контроллере и настроить маршруты дляони или я могли бы создать совершенно новый контроллер.

Но должен быть гораздо более чистый способ достижения того, чего я пытаюсь достичь.Разве я не могу использовать 1 действие для всех шаблонов?

Я могу заставить это работать, если я добавлю рендер 'pages / settings / edit_account / basic_info' в действие в контроллере страниц, а затем в функцию javascipt .load.Я просто вызываю маршрут действия, и он работает, но я могу отображать только один шаблон за один раз.

Надеюсь, я никого не запутал.

Помощь будет принята.

1 Ответ

0 голосов
/ 20 августа 2011

Лучше всего создать несколько действий. Каждый вызов ajax должен иметь свою собственную конечную точку действия, если он загружает различную информацию или другое представление этой информации.

Если единственное различие заключается в представлениях, вы можете использовать одно действие контроллера и передать параметр, который затем можно использовать на этапе рендеринга действия, чтобы контролировать, какое представление используется.

Например:

case params[:view]
  when 'contact' render 'pages/settings/contact...'
  when 'relatives' render 'pages/settings/relatives...'
end

и т.д.

, а затем

$("#dest").load('<%= profile_path({ :view => 'contact' }) %>');

в вашем javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...