我收到此错误:
NoMethodError - undefined method `stringify_keys' for "/posts/7/up-vote":String:
这是我的代码:
<% if policy(Vote.new).create? %>
<div class="vote-arrows pull-left">
<div if vote = current_user.vote(post) %>
<%= link_to [post, Vote.new], post_up_vote_path(post), class: 'btn btn-primary', method: :up_vote do %>
<i class = "glyphicon glyphicon-chevron-up #{(current_user.voted(post) && current_user.voted(post).up_vote?) ? 'voted' : '' }" ></i> Upvote
<strong><%= post.points %></strong>
<% end %>
<% else %>
<%= link_to [post, vote], post_down_vote_path(post), class: 'btn btn-danger', method: :down_vote do %> <i class = "glyphicon glyphicon-chevron-down #{(current_user.voted(post) && current_user.voted(post).down_vote?) ? 'voted' : '' }"></i>;nbsp; Downvote
<% end %>
</div>
<% end %>
我收到了这一行的错误:
<%= link_to [post, Vote.new], post_up_vote_path(post), class: 'btn btn-primary', method: :up_vote do %>
<i class = "glyphicon glyphicon-chevron-up #{(current_user.voted(post) && current_user.voted(post).up_vote?) ? 'voted' : '' }" ></i> Upvote
非常感谢任何帮助......
答案 0 :(得分:3)
尝试逐行浏览您发布的代码并查找错误。这里有一些要检查:
<!-- Mixing HTML and Ruby on this line -->
<div if vote = current_user.vote(post) %>
link_to
链接需要一些爱。仔细阅读文档并特别注意:
:method
link_to
个文档:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
您可能需要花一些时间来缩进if/else/ends
缩进,因为这样可以更轻松地发现语法错误。
答案 1 :(得分:0)
link_to
来电的格式为:
link_to "The text in the link", the_path, hash_of_options
第一个参数必须是文本是Sergio所说的“link_to必须接受标签作为其第一个参数”。所以,像:
<%= link_to "Up-vote the post" , post_up_vote_path(post), class: 'btn btn-primary', method: :up_vote do %>
你给它一个路径(或一个可以转换为路径的数组)作为两个主要参数。
查看方法的文档:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
请注意,您的链接包含一个图标,该图标可能取代“标签”,因此您的标签可能只是一个空字符串。