我在我的rails应用程序上有一个功能,用户可以通过按下按钮添加收藏夹。添加收藏夹后,页面将重新加载到屏幕顶部。用户喜欢的指南可能是屏幕的一半,因此他们必须再次开始在顶部观看时很烦人。有没有办法让它变成'最喜欢'但是留在用户在页面上的位置?
在index.html.erb(views)
<% if !current_user.favourite_guidelines.select{|f| f.guideline_id==guideline.id}.any? %>
<%= link_to guidelines_favourite_path(guideline_id: guideline.id, type: "favourite"), method: "get", class: "btn btn-small main" do%>
<i class="icon icon-star"></i> Favourite
<% end %>
<% end %>
<% if current_user.favourite_guidelines.select{|f| f.guideline_id==guideline.id}.any? %>
<%= link_to guidelines_favourite_path(guideline_id: guideline.id, type: "unfavourite"), method: "get", class: "btn btn-small main" do%>
<i class="icon-star-empty"></i> Unfavourite
<% end %>
guidelines_controller.rb
def favourite
type = params[:type]
if type == "favourite"
@guideline= Guideline.find_by_id(params[:guideline_id])
current_user.favourite_guidelines.build(:guideline_id => @guideline.id).save
redirect_to :back
elsif type == "unfavourite"
@guideline= Guideline.find_by_id(params[:guideline_id])
current_user.favourite_guidelines.where(:guideline_id => @guideline.id).destroy_all
redirect_to :back
else
# Type missing, nothing happens
redirect_to :back, notice: 'Nothing happened.'
end
end
答案 0 :(得分:1)
您通常会通过使用AJAX来实现这一点,以便只重新加载部分页面,保持用户的滚动位置。 Rails指南在这里有一些不完整的信息: http://guides.rubyonrails.org/ajax_on_rails.html
此主题还有一个RailsCast。他们非常有帮助,值得购买。
答案 1 :(得分:1)
redirect_to
加载页面,这就是为什么它位于顶部。
如果您愿意,可以使用javascript滚动到该元素 重定向。我假设你做的是这样的事情:
OR