我一直在寻找答案,但我似乎无法找到合适的答案。我正在博客上工作,如果你喜欢或不喜欢,你可以在每个帖子上投票。我正在使用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
一旦我刷新页面,按钮就可以正常工作了,但是我想在点击喜欢/不喜欢
时让喜欢/不喜欢的按钮自动更新感谢任何帮助。
谢谢
答案 0 :(得分:0)
以下是您需要的链接的语法:
<%= link_to "Blahblahblah this is a link", story_path(@story) + "#story_#{@story.id}" %>