【发布时间】:2015-11-01 22:24:28
【问题描述】:
我一直在这里寻找我的问题的答案,但似乎找不到确切的答案。我正在写博客,如果你喜欢或不喜欢它们,你可以在每篇文章上投票。我正在为我的投票表使用 act_as_votable。我遇到的问题是,一旦您单击喜欢或不喜欢,您就会被重定向到页面顶部,这很烦人,因为您想从原来的位置继续,而不需要从顶部开始。有人告诉我,由于我是新手,所以使用 ajax 太复杂了,所以我想使用 redirect_to 和 anchor,只是让 ID 成为喜欢或不喜欢的故事。长话短说,在阅读了关于这个主题的所有 stackoverflow 之后,我仍然不知道该怎么做。我知道我很接近,但我想我需要一些帮助。
经过更多搜索后,我尝试将锚点转换为使用 ajax,因此每次有人点击喜欢或不喜欢时都不需要重新加载页面。我已经阅读了许多与我相似的 stackoverflow,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 %>)
#我知道这两个按钮是不同的。我试图找到使它们工作的最佳方法,但都不会自动更新。我需要刷新页面才能更新计数器
<%= 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
一旦我刷新页面,这些按钮就会起作用,但是我希望在您点击喜欢/不喜欢时让喜欢/不喜欢按钮自动更新
感谢任何帮助。
谢谢
【问题讨论】:
-
这不是您需要的确切答案吗? -> stackoverflow.com/questions/757891/…
-
@Cailou,我已尝试更改此内容以匹配我需要的内容,但出现语法错误。我将其更改为:
-
语法错误是什么?
-
/home/ubuntu/workspace/scareme/app/controllers/stories_controller.rb:40:语法错误,意外' ^ /home/ubuntu/workspace/scareme/app/controllers/stories_controller.rb:40:未终止的字符串遇到文件结尾/home/ubuntu/workspace/scareme/app /controllers/stories_controller.rb:40:语法错误,意外的输入结束,期待关键字_end
-
你能发布 stories_controller.rb 第 40 行
标签: ruby-on-rails ruby-on-rails-4 redirect anchor