重定向到rails 4中的锚点

时间:2015-10-28 12:26:46

标签: ruby-on-rails ruby-on-rails-4 redirect anchor

我一直在寻找答案,但我似乎无法找到合适的答案。我正在博客上工作,如果你喜欢或不喜欢,你可以在每个帖子上投票。我正在使用act_as_votable作为我的投票表。我遇到的问题是,一旦你点击喜欢或不喜欢你被重定向到页面顶部会变得烦人,因为你想从你所在的地方继续而不需要从顶部开始。我被告知使用ajax太复杂了,因为我有多新,所以我想使用redirect_to和锚点,只是让ID成为喜欢或不喜欢的故事。长话短说,在阅读了关于这个主题的每个堆栈溢出之后,我仍然不知道该怎么做。我知道我很亲密,但我认为我需要一些帮助。

在进行更多搜索之后,我尝试从锚点转换为使用ajax,因此每次有人点击或不喜欢该页面时都不需要重新加载。我已经读过许多类似于我的堆栈溢出,How to add an anchor to redirect_to :back,这个似乎最简单,但我仍然遇到问题。这就是我所拥有的:

故事控制器

def upvote
  @story = Story.find(params[:id])
  @story.upvote_by(current_user)
    respond_to do |format|
    format.html {redirect_to :back}
    format.js { render layout: false }
  end
end

def downvote
  @story = Story.find(params[:id])
  @story.downvote_by(current_user)
  respond_to do |format|
    format.html { redirect_to :back }
    format.js { render layout: false }
  end
end

_story.html.erb

<div class="story_partial" id="story_<%= story.id %>">
  <%= story.content %>
  <div id="downvote_button_<%= story.id %>">
    <%= link_to "dislike", downvote_path, method: "post", remote: true %>
  </div>
</div>

<div class="story_partial" id="story_<%= story.id %>">
  <%= story.content %>
  <div id="upvote_button_<%= story.id %>">
    <%= link_to "like", upvote_path, method: "post", remote: true %>
  </div>
</div>

upvote.js.erb

$('#story_<%= @story.id %>').html('<%= j render @story %>');

index.html.erb

<%= link_to like_story_path(story), method: :post, remote: true, class: "btn btn-warning btn-xs" do %>
That scared me! <span class="text-warning"> </span>  <% end %>(<%= story.get_upvotes.size %>)

#I我知道这两个按钮是不同的。我试图找到使它们工作的最佳方法,但都不会自动更新。我需要刷新页面才能让计数器更新

<%= button_to dislike_story_path(story), method: :get, remote: true, class: "btn btn-success btn-xs" do %>
You Wimp! <span class="text-warning"></span><% end %>
(<%= story.get_downvotes.size %>)

的routes.rb

  resources :stories do
   member do
    post :like, to:'stories#upvote'
    get :dislike, to:'stories#downvote'
  end
end 

一旦我刷新页面,按钮就可以正常工作了,但是我想在点击喜欢/不喜欢

时让喜欢/不喜欢的按钮自动更新

感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:0)

以下是您需要的链接的语法:

<%= link_to "Blahblahblah this is a link", story_path(@story) + "#story_#{@story.id}" %>