2017-09-25 41 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) %> 

工程。感謝您的反饋。