2017-09-25 43 views
0

在我的LinksController我有以下几点:如何使一个Rails点击链接影响计数器?

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 

我能够打的路线,并导致TOTALCOUNT增加,甚至做的下降用另一种方法。然而,我挣扎,以打击对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> 

我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'为“http://adamswilliamson.name”:字符串。

我只是使用错误的路线或语法错误?

+0

link_to的语法错误。浏览文档 – krishnar

回答

0
link_to(body, url, html_options = {}) 

link_to辅助接受body,一个urlhtml_options选项作为参数。你试图通过两个URL,第二个是作为选项参数的一部分,第一个不是Rails可以使用的有效路径。

我想你需要的是通过你的插值网址为体,如:

<%= link_to "http://#{link.url}", link_link_vote_path(link) %> 
0

我做了几件事情是错误的。首先,我被重定向到根,而不是将其保留在网页上,并影响计数器的网址,但我没有回击,并刷新页面所以我把它更新到以下几点:

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) %> 

工程。感谢您的反馈。