2016-11-29 2 views
0

Я пытался решить следующую задачу весь день без всякой удачи.Отображение выбора индекса в частичном

При просмотре сообщений в форуме я столкнулся с jQuery и AJAX, которые являются для меня новыми идеями и которые я бы предпочел пропустить сейчас, если это возможно.

У меня есть частичный «navbar-left», который показывает список всех банковских счетов в моей учетной записи модели. Когда пользователь нажимает на один из элементов в списке, все транзакции этой учетной записи должны быть показаны на той же странице справа. Частично ниже ссылки на новую страницу, которая мне не нравится.

навигационной панели-парциальное:

<ul class="nav nav-pills nav-stacked"> 
    <% @accounts.each do |account| %> 
    <li role="presentation"><%= link_to account.account_holder, account_mutations_path(account.id) %></li> 
    <% end %> 
</ul> 

Любые советы о том, как получить это фиксированное очень ценится!

The page with the navbar at the left

The mutations in a separate page instead of a partial

ответ

0

Либо вы отправляете зрителей на новую страницу, или динамической загрузки контента в их текущей страницы.

Если последнее, то единственным решением является AJAX.

К счастью, Ruby on Rails делает переход от одного к другому очень простым.

Вот суть того, как это работает:

<%= link_to account.account_holder, account_mutations_path(account.id), remote: true %> 

Это указывает обратно на какой странице ранее (например, action.html.erb).

Из-за remote: true он будет отправлять JS непосредственно в браузер вместо новой HTML-страницы (например, action.js.erb в той же папке просмотра и том же имени действия).

Здесь мы можем контролировать поведение мы хотим пути предоставления частичного использования Еврорадио и с помощью JS для изменения содержимого HTML некоторой части страницы:

// action.js.erb 
$('#some_element').html('<%= j render "partial" %>') 

Что будет вставлять HTML из парциальных непосредственно в JQuery, который динамически изменяет содержимое.

Где j является сокращением на escape_javascript.

Без выхода из строя выход Ruby интерпретируется как выход файла, а символы новой строки разбивают ваш JS.

Пример JS выход без побега:

// Bad 
$('#some_element').html('<span>Content</span> 
<span>More Content</span>') 

Пример вытекания:

// Good 
$('#some_element').html('<span>Content</span>\n<span>More Content</span>') 

http://guides.rubyonrails.org/working_with_javascript_in_rails.html

https://launchschool.com/blog/the-detailed-guide-on-how-ajax-works-with-ruby-on-rails

Есть еще большие примеры в Интернете и даже Railscasts.

+0

Проблема решена, спасибо fbelanger за то, что поставили меня в правильном направлении! – nannev

0

Действительно AJAX это лучший способ сделать это, и это не так сложно, как вы могли бы подумать. Но если вы действительно хотите пропустить AJAX, тогда ваш лучший подход - это, вероятно, загрузить ВСЕ транзакции для всех учетных записей, в разные div, а затем показать или скрыть их на основе щелчка.

Для элементарного введения в этот вид вкладок javascript ... вы щелкаете по вкладке, отображается соответствующая информация.

http://www.w3schools.com/howto/howto_js_tabs.asp

0

Вы можете сделать это очень просто без ajax. Большая разница была бы - это не та же самая страница. Одной страницей будет account#index (как и у вас сейчас), другая страница - страница account#show.

Для показа страницы, используйте очень похожее представление, как индексная страница, левая сторона будет включать в себя частичную с одной из учетной записи li class="active", чтобы выделить учетную запись, в которой вы сейчас находитесь. В правой части страницы создайте элементы списка мутаций учетной записи.