你好我正在做https://www.youtube.com/watch?v=7-1HCWbu7iU和我最多50.07分钟。我是红宝石的新手。已经学习了3个星期。
我刚装载Acts As Votable Gem。根据说明加载它。我能够使用ruby控制台添加一个upvote。所以它似乎有效。
然而
当我点击upvote 时出现此错误没有路线匹配[GET]“/ links / 1 / like”
您可以在此链接http://postimg.org/delete/8cmbm60j6/
中查看该图片以下是我的观点>链接> index.html.erb
<% @links.each do |link| %>
<div class="link row clearfix">
<h2>
<%= link_to link.title, link %><br>
<small class="author">Submitted <%= time_ago_in_words(link.created_at) %> by <%= link.user.email %></small>
</h2>
<div class="btn-group">
<a class="btn btn-default btn-sm" href="<%= link.url %>">Visit Link</a>
<%= link_to like_link_path(link), method: :put, class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-up"></span>
Upvote
<%= link.get_upvotes.size %>
<% end %>
<%= link_to dislike_link_path(link), method: :put, class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-down">
Downvote
<%= link.get_downvotes.size %>
<% end %>
</div>
</div>
<% end %>
以下是我的routes.rb
Rails.application.routes.draw do
resources :comments
devise_for :users
resources :links do
member do
put "like", to: "links#upvote"
put "dislike", to: "links#downvote"
end
resources :comments
end
root "links#index"
任何人都知道问题是什么?谷歌没有帮助......谢谢!
答案 0 :(得分:1)
在你的路线中你已经定义了
put "like", to: "links#upvote"
这意味着动词必须是&#39; PUT&#39;
你正在打击&#39; GET&#39; /links/1/like
。
您需要将get
请求更改为put
请求
您的路线为[PUT] "/links/1/like"
而不是[GET] "/links/1/like"
每个链接都是get
请求,您需要ajax
请求此
答案 1 :(得分:0)
将路径中的路径设为get或post而不是put
例如
resources :links do
member do
get 'like'
get 'dislike'
end
您收到错误是因为您尚未在路线文件中指定路线。
答案 2 :(得分:0)
@ joeyk16,只是尝试将:method => :put
选项更改为:data => {:method => :put}
并在app.js中包含jquery_ujs(如果还没有)。
所以链接看起来像是:
link_to dislike_link_path(link), :data => {:method => :put}, :class => "btn btn-default btn-sm"
答案 3 :(得分:0)
我遇到了这个问题并以这种方式解决了这个问题:
事实证明,答案与JQuery有关。我得到了一个Uncaught ReferenceError:jQuery没有定义错误,所以我所做的是在我的application.html.erb文件中直接包含JQuery。
你必须先把它放在所有其他脚本之前。
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
之后,投票开始起作用
答案 4 :(得分:0)
对于我的路线,我删除了member do
位:
resources :links do
#member do
put "Like", to: "links#upvote"
put "Dislike", to: "links#downvote"
#end
end
在运行rake路由后,我意识到路径名也已更改。这是我的 app / views / links / index.html.erb :
<% @links.each do |link| %>
<div class="link row clearfix">
<h2>
<%= link_to link.title, link %><br />
<small class="author">Submitted <%= time_ago_in_words(link.created_at) %> by <%= link.user.email %></small>
</h2>
<div class="btn-group">
<a class="btn btn-default btn-sm" href="<%= link.url %>">Visit Link</a>
<%= link_to link_Like_path(link), method: :put, class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-up"></span>
Upvote
<%= link.get_upvotes.size %>
<% end %>
<%= link_to link_Dislike_path(link), method: :put, class: "btn btn-default btn-sm" do %>
<span class="glyphicon glyphicon-chevron-down">
Downvote
<%= link.get_downvotes.size %>
<% end %>
</div>
</div>
<% end %>
显然现在是link_Like_path(link)
&amp; link_Dislike_path(link)
希望这有帮助