try*_*000 2 ajax jquery ruby-on-rails ruby-on-rails-3
rails newbie herem,我想学习一些关于jquery的东西,所以我想我会尝试使用AJAX在我的部分视图之间切换.
现在在我的用户短划线上我有一个指向他们'喜欢'页面的链接,它需要完全重新加载才能看到'喜欢'页面,我如何更改这个以使用likes_user_path @用户刷新?
视图/页/ home.html.erb
<div id="left">
<div id="dash-statistics">
<a href="<%= likes_user_path(@user) %>">
<div id="likes" class="stat">Likes
<%= @user.likes.count %>
</div>
</a>
</div>
</div>
<div id="right">
<div id="content">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
UsersController
def likes
@title = "Likes"
@user = User.find(params[:id])
@like_stuff = @user.likes.paginate(:page => params[:page])
render 'show_likes'
end
Run Code Online (Sandbox Code Playgroud)
我的理解是,您希望likes通过在用户仪表板中使用ajax单击链接来重新加载.
首先要做的是重写链接,并添加:remote => true如下:
<%= link_to "Likes", likes_user_path(@user), :remote => true %>
Run Code Online (Sandbox Code Playgroud)
然后,在你的控制器中,确保你有一个respond_to :html, :js顶部(当然可以有其他选项,但:js必须在其中)
在那之后,你可以likes在你的控制器中调用一个用于加载喜欢的函数,这些函数看起来像你的,只有你最后不做render,但是respond_with @likes.通过其:js在respond_to过滤器,Rails会自动地相应应该采取行动的时候.
接下来,制作一个相应的视图likes.js.erb(我不确定coffeescript是否可以在这种情况下开箱即用),你可以在其中放置类似的东西
$('#likes').html('<%= escape_javascript(render "likes", :likes => @likes) %>');
Run Code Online (Sandbox Code Playgroud)
这假设在您想要渲染喜欢的主视图中,有一个元素,id=likes其中可能如下所示:
<div id="likes">
<%= render "likes", :likes => @likes %>
</div>
Run Code Online (Sandbox Code Playgroud)
并且还有_likes.html.erb一部分呈现出喜欢的东西
<% likes.each do |like| %>
<div>
<%= like.name %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
有了这个,我想我几乎涵盖了它.
| 归档时间: |
|
| 查看次数: |
1738 次 |
| 最近记录: |