0

我的 Rails 应用程序上有一个功能,用户可以通过按下按钮添加收藏夹。添加收藏夹后,页面将重新加载到屏幕顶部。用户喜欢的指南可能位于屏幕的一半,然后他们不得不再次开始在顶部查看,这很烦人。有没有办法将其更改为“最喜欢的”但保持用户在页面上的位置?

在 index.html.erb(视图)中

<% 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 %>

指南控制器.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
4

2 回答 2

1

您通常会通过使用 AJAX 来实现这一点,以便仅重新加载页面的一部分,从而保持用户的滚动位置。Rails 指南在这里有一些不完整的信息:http: //guides.rubyonrails.org/ajax_on_rails.html

还有一个关于这个主题的RailsCast。它们非常有用,值得购买。

于 2013-03-05T23:53:38.770 回答
1

redirect_to加载页面,这就是为什么它在顶部。

或者

  • 您可以进行 AJAX 调用,这样页面就不会重定向。然后,您只需让响应更新用户所在的页面,因此用户不会被重定向到任何地方
于 2013-03-05T23:54:04.497 回答