Действие jQuery в Rails

#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 там, где он должен быть закрыт.