#jquery #ruby-on-rails #ruby
#jquery #ruby-on-rails #ruby
Вопрос:
Мне нужно перевести этот фрагмент прототипа в jQuery:
div id="do_bookmark" <%= style_for_do_bookmark @gigapan %> >
<%= link_to_remote "Add to Favorites",
:url => { :controller => "bookmarks",
:action => "create",
:user_id => current_app_user.id,
:bookmarked_type => @photo.class.to_s,
:bookmarked_id => @photo.id },
:method => 'post'
%>
</div>
Какой был бы наилучший способ сделать это, чтобы захватить контроллер, действие и т.д. В URL?
Комментарии:
1. Вы пытаетесь сделать это на rails 3? потому что там
link_to_remote
больше нет…
Ответ №1:
В Rails 3
вы можете сделать это с помощью
<%=
link_to 'add to favorites',{
:controller=> 'bookmarks',
:action => 'create',
:user_id => current_app_user.id,
:bookmarked_type => @photo.class.to_s,
:bookmarked_id => @photo.id
},
:remote=>true
%>
и это сделало бы удаленную ссылку для вас.
но если вы хотите сделать это с помощью jQuery
, вы можете выполнить функцию, подобную этой:
function addToFavorites(photoId,photoClass){
$.ajax({
url:"<%=
url_for(
:controller=> 'bookmarks',
:action => 'create',
:user_id => current_app_user.id
)%>",
data: "bookmarked_id=" photoId "amp;bookmarked_type=" photoClass,
dataType: "script"
});
}
и вы можете вызвать функцию по ссылке
<a href="#" onclick="addToFavorites(<%=@photo.id%>,<%=@photo.class%>); return false">
Add To Favorites
</a>
Для получения дополнительной документации:
http://api.jquery.com/jQuery.ajax / (jQuery Ajax())
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html (Помощники по URL-адресам Rails)
Комментарии:
1. ), в строке 8 addToFavorites, похоже, выдает ошибку. Я использую Rails 2. Изменится ли синтаксис функции?
2. @ansible только что обновил ответ, не закрыл тег rails там, где он должен быть закрыт.