В приложении Rails, как я могу сделать загрузку ссылки в div вместо обновления всей страницы? - PullRequest
2 голосов
/ 20 июня 2011

Я все еще новичок в веб-разработке.Это не моя профессия.Так что будьте спокойны.

Я начал создавать приложение rails сегодня и понял, что это сделало бы мое приложение намного лучше, если бы я мог заставить определенные ссылки отображаться в отдельном div вместо новой страницы или обновлять всю страницу.стр.Я не совсем уверен, как искать это, и я продолжаю гоняться за красными сельдями с помощью Google.

По сути, у меня есть список в div в левой части страницы, и когда один элемент из этогосписок нажимается, он должен появиться в правом div.(Больше ничего на странице не нужно менять)

Это действительно так просто, как есть.Нужно ли использовать Javascript для этого?Могу ли я сойти с rails js по умолчанию, или я должен использовать JQuery?

Есть ли способ сделать это без JavaScript?Мне действительно нужен толчок в правильном направлении, я устал даже не знать, как искать это или какую документацию я должен читать.

Как я уже сказал, действуйте спокойно, и вы должныпросто идти вперед и ошибиться в сторону осторожности и предположить, что я ничего не знаю.Шутки в сторону.:)

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

-Kevin

(Кстати, я разрабатываю с Rails 3)

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Создайте свои представления (вместе с контроллерами), которые будут отображаться внутри div для каждого элемента в левом меню.Допустим, теперь у нас есть следующая структура:

и т. Д. ... убедитесь, что вы отображаете только HTML, который будет помещен в ваш контент. Не должны включать <head> <body> etc. теги

На главной странице вы можете иметьразметка вот так>

<div id="leftMenu">
<a href="http://myapp.com/item1">Item 1</a>
<a href="http://myapp.com/item2">Item 2</a>
</div>

<div id="content">
Please click on an item on the left menu to load content here
</div>

Наконец, добавьте следующий Javascript (вам понадобится jQuery; поверьте мне, это правильное решение).

$("#leftMenu a").click(function () {

   $("#content").load($(this).attr("href")); //load html from the url and put it in the #content element

   return false; //prevent the default href action

});
0 голосов
/ 20 июня 2011

Вам понадобится JavaScript, если вы хотите избежать перезагрузки страницы.Вы можете использовать link_to для ссылок в своих списках, и вам нужно будет использовать :remote => true, чтобы заставить его отправлять запросы AJAX на сервер.Сервер должен будет ответить соответствующим образом и предоставить HTML для вашего div.

link_to документация находится здесь: http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to (и, правда, это не очень полезно для функциональности AJAX).

Последнее сообщение в этой теме показывает одно из возможных решений, которое вы могли бы использовать.

...