在我的LinksController中,我有以下内容:
def vote
@link = Link.find(params[:link_id])
@link.votes << Vote.create!(user_id: @link.user_id, link_id: @link.id)
@link.totalcount = @link.votes.count
@link.save
redirect_to :root
end
我也有以下路线:
root GET / links#index
link_vote GET /links/:link_id/vote(.:format) links#vote
link_link_vote GET /links/:link_id/link_vote(.:format) links#link_vote
link_down_vote GET /links/:link_id/down_vote(.:format) links#down_vote
links GET /links(.:format) links#index
POST /links(.:format) links#create
new_link GET /links/new(.:format) links#new
edit_link GET /links/:id/edit(.:format) links#edit
link GET /links/:id(.:format) links#show
PATCH /links/:id(.:format) links#update
PUT /links/:id(.:format) links#update
DELETE /links/:id(.:format) links#destroy
GET / links#index
我能够击中路线并导致总数增加,甚至用另一种方法减少。然而,我正在努力争取link_vote的路线,下面的第一行:
<td><%= link_to link.url, "http://#{link.url}", link_link_vote_path(link) %></td>
<td><%= link.title %></td>
<td><%= link.totalcount %></td>
<td><%= link_to "UP", link_vote_path(link) %></td>
<td><%= link_to "DOWN", link_down_vote_path(link) %></td>
My LinksController具有以下内容:
def link_vote
@link = Link.find(params[:link_id])
@link.votes << Vote.create!(user_id: @link.user_id, link_id: @link.id)
@link.totalcount = @link.votes.count
@link.save
redirect_to :root
end
我尝试加载时收到以下内容:
undefined method `stringify_keys' for "/links/119/link_vote":String
我尝试在超链接之前添加link_link_vote_path(链接)。得到大致相同的消息:未定义的方法`stringify_keys&#39; for&#34; http://adamswilliamson.name&#34;:String。
我只是使用错误的路线或语法错误吗?
答案 0 :(得分:0)
link_to(body, url, html_options = {})
link_to
助手接受body
,url
和html_options
选项作为参数。你试图传递两个url,第二个是作为options参数的一部分进行威胁,第一个不是Rails可以使用的有效路径。
我认为您需要的是将插值网址作为正文传递,例如:
<%= link_to "http://#{link.url}", link_link_vote_path(link) %>
答案 1 :(得分:0)
我做错了几件事。首先,我重定向回到root而不是URL,这会将其保留在页面上并影响计数器,但我没有回击并刷新页面,所以我将其更新为以下内容:
def link_vote
@link = Link.find(params[:link_id])
@link.votes << Vote.create!(user_id: @link.user_id, link_id: @link.id)
@link.totalcount = @link.votes.count
@link.save
redirect_to @link.url
end
然后提示有两个网址被传递,我能够将索引修复为:
<%= link_to link.url, link_link_vote_path(link) %>
作品。感谢您的反馈。