2016-10-14 28 views
0

我正在研究一種方式,可以讓用戶「標記」評論的評論。我在評論中使用一個整數列,當用戶點擊「標記」時,該評論隨時會增加,主持人首先會看到最多標記的評論。我得到了這個與我的一個模型更早的工作,我用我的評論模型相同的方式,但它沒有做任何事情,沒有拋出任何錯誤,但也沒有做任何事情。整數列在Rails中不遞增

Reviews_controller.rb

def flag 
     @review = Review.find(params[:id]) 
     @review.increment!(:flag) 

    end 

show.html.erb

<%= link_to 'Flag', flag_review_path(review), method: :post, :remote => true %> 

遷移到用於標誌位和有用給予好評添加柱(將在後面實施)

class AddColumnsToReviews < ActiveRecord::Migration 
    def change 
    add_column :reviews, :flag, :integer, default: 0 
    add_column :reviews, :useful, :integer, default: 0 
    end 
end 

**路線爲標誌**這個

resources :reviews do 
    member do 
     post 'flag', :review 
    end 
    end 

任何幫助將不勝感激。此外,我不知道這是否恰當,但即使我的遷移聲明這些字段的默認值應爲0,我的數據庫中顯示爲NULL。

+1

您的服務器日誌是否顯示提交或回滾到數據庫?你有沒有在控制器中放置斷點以確保'p​​arams [:id]'在那裏並且'@ review'是有效的? –

+0

嘗試在遷移中指定null:false。當您點擊ReviewsController#flag時,是否在控制檯中看到任何SQL跟蹤 - 如果您不太可能出現路由問題。 – David

+0

如果刪除:remote => true會發生什麼? – Gaston

回答

1

想通了...感謝約翰,Henners66和加斯頓您的建議。我通過瀏覽服務器日誌找出了問題,這非常複雜,而且我很可能會遇到這種錯誤(如果有的話,請隨時提供建議)。

的評論顯示一個「教授」網頁上,是非常依賴於教授允許學生提供他們的教授進行了審查。評論控制器有一個before_action :set_professor這是防止國旗工作。所以通過添加before_action :set_professor, :except => [:flag]我能夠得到它的工作。

再次感謝大家的反應和我的靈感,因爲你的建議的服務器日誌挖掘身邊的建議。

+1

不客氣......很高興你到底了,謝謝你的更新:)。 before_action中的異常對我來說似乎完全有效。 – David