Из вашего описания видно, что к вашей ссылке не подключены ненавязчивые слушатели JavaScript, и поэтому браузер просто следует по ссылке href
ссылки.Таким образом, проблема, кажется, на стороне клиента.
Но ваш вопрос не дает достаточно подробностей, чтобы дать прямой ответ, поэтому я просто перечислю все шаги, которые я предприму, чтобы исследовать это.
Сначала, чтобы сделать этоДля работы вы должны включить все необходимые javascripts и метатеги csrf в ваш макет <head>
.Лучше всего сделать это с помощью:
<%= javascript_include_tag :defaults %>
<%= csrf_meta_tag %>
Если у вас есть это, загрузите страницу и посмотрите на источник, если он действительно генерирует ссылки правильно.Вы должны увидеть что-то вроде этого:
<head>
<script src="/javascripts/prototype.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/effects.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/dragdrop.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/controls.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/rails.js?1285857859" type="text/javascript"></script>
<script src="/javascripts/application.js?1285934960" type="text/javascript"></script>
<meta name="csrf-param" content="authenticity_token"/>
<meta name="csrf-token" content="b2HRysd23edj1/vrCSRDSac0seDFae3n2gCoTjt0="/>
</head>
Если они есть, я бы установил отладчик Firebug Javascript или использовал инструменты разработчика Chrome, включил его и посмотрел, есть ли ошибки на странице.когда он загружен и когда вы нажимаете на ссылку.Вы также можете просмотреть отправленные запросы и посмотреть, являются ли они xhr тогда и там.
Если это все еще не работает, откройте rails.js
в Firebug и установите точку останова перед тем фрагментом кода, который отвечает заприсоединение слушателей к data-remote
и / или data-method
.Это:
document.on("click", "a[data-remote]", function(event, element) {
if (event.stopped) return;
handleRemote(element);
event.stop();
});
Установите точку останова в первой строке и вторую точку останова внутри функции-обработчика.Затем перезагрузите страницу и посмотрите, присоединяется ли она к слушателю.Затем нажмите на ссылку и посмотрите, запущен ли обработчик.А потом ... это зависит от того, что происходит.Надеюсь, вы можете продолжить самостоятельно.
И просто общее примечание - я думаю, show
действие должно быть доступно с get
, а не post
.
- РЕДАКТИРОВАТЬ -
Я думаю, что 406 not acceptable
возвращается, потому что у вас нет format.html
в вашем блоке respond_to
.Если вы добавите его, он должен просто отобразить шаблон show.html.erb
.