url_for не принимает аргумент :remote => true
, обычно вы отправляете его на метод link_to
.
Есть причина, по которой вы не можете вместо этого сделать <div>
ссылкой?Для всех намерений и целей он функционирует как ссылка, поэтому вы должны пометить его как таковой, мы называем эту семантическую разметку.
Если вы действительно хотите это сделать, вероятно, было бы лучше использовать jquery(или прототип, если это ваша чашка чая), чтобы выполнить действие незаметно ... это также облегчает выполнение запроса ajax.Вы пытаетесь что-то обновить на своей странице после нажатия на ссылку, или просто ничего не делаете?
Также «window.location» сообщает javascript на странице для перенаправления.Вы бы не использовали это, если хотите сделать запрос удаленно.
Используя jquery, вы могли бы сделать это так, если хотите придерживаться div
%(function(){
$('#foo').click(function(){
$.get(
url: $(this).data('request-path'),
success: function(data){
alert('success sir! controller responded with ' + data);
}
);
});
});
И используйте это в своем представлении:
<div id='foo' data-request-path='<%= url_for foo_controller_path(:someparam => @left) %>'></div>
Но если вы изменили его на тег ссылки, вы могли бы сделать это вместо этого ...
= link_to("", url_for(foo_controller_path(:someparam => @left)), :remote => true, :id => 'foo')
И это должно просто работать,Затем вы можете стилизовать эту ссылку так же, как вы пытались стилизовать свой тег div.
Это более семантический и меньший код, о котором вам стоит беспокоиться.Если вам нужно что-то обновить в dom позже, вы можете добавить этот jquery (если вы используете jquery и rails3):
$('#foo').bind('ajax:success', function(data){
alert('successful request! data was: ' + data);
});
Я не обязательно проверял все изэто должно быть хорошей отправной точкой ... Я не большой поклонник добавления обработчиков onclick в теги.Это имеет тенденцию работать лучше, когда вы связываете события, используя jquery.
Если вы хотите делать то, что я описал, но вы в rails 2, вы можете получить jquery-скрипт rails3 отсюда: https://github.com/rails/jquery-ujs
Обратите внимание, что вам также понадобится этот скрипт, если вы используете rails 3 и хотите использовать jquery вместо прототипа (как я!).Rails 3.1 будет поставляться в комплекте с jquery вместо прототипа, который я слышу по умолчанию.
И изменить :remote => true
в этом url_for на "data-remote" => true
(для rails 2, с rails 3 вы можете использовать синтаксис символа ион делает для вас атрибут 'data-remote'
.
Дайте мне знать, если что-то не сработало, или вам нужны разъяснения, или даже если вы полностью ненавидите мои идеи: p