这让我大吃一惊,而且还有很多事情需要我在这里寻求帮助。
现在,我有一份资源清单。在每个资源中,它允许某人通过单击链接“将其添加为收藏”。我有正常的重定向工作,但至于集成ajax所以他们可以喜欢没有页面刷新,我完全失去了...
FavoritesController(更新是此控制器中的唯一操作)
def update
@favorite = Favorite.find_or_initialize_by_resource_id_and_user_id(params[:id], current_user.id)
if @favorite.persisted?
@favorite.destroy
else
if @favorite.valid?
@favorite.save
end
end
redirect_to root_url
end
我的观点:
<%= link_to "", favorites_path(:id => resource.id), :class => "star#{star_post?(resource)}", :method => "put" %>
我的路线:
resource :favorites, :only => [:update]
我的JS:
$('.res-list .star').click(function(){
$.put('/favorites/?id=' + $(this).attr('data-id'));
return false;
});
答案 0 :(得分:5)
有几种方法可以做到这一点。您可以使用link_to_function
通过javascript方法传递(如果您在视图或application.js中定义了自定义的方法,您甚至可以传递自定义方法)。在此方法中,您可以设置AJAX调用以执行更新操作。
查看(使用jQuery的put
宏):
<%= link_to_function "AJAX Link", "$.put('/favorites/#{resource.id}');" %>
另一种方法是为链接添加一个HTML选择器。同样,您需要编写一些js来执行更新操作。我倾向于喜欢这种方式,因为我喜欢使用按钮而不是<a href="#">
标签。 (虽然说实话,我最后只是创建一个button_to_function
方法来调用content_tag(:button)
而不是content_tag(:a)
)
答案 1 :(得分:1)
我建议从基于JQuery和Ajax处理的Railscast开始。它有点陈旧,但仍然非常稳固,它将为您提供基础知识,帮助您入门。
http://railscasts.com/episodes/136-jquery
它将让您了解如何将ajax调用附加到页面上的元素,处理请求处理并制作基本的javascript视图部分,以便为用户更新表单。
祝你好运!