2016-02-07 104 views
0

我正在嘗試創建一個足球相關的應用程序,其中用戶有許多俱樂部。在這種情況下,當一個用戶與他的一個俱樂部進行互動時,我需要一個用戶「current_club_id」中的變量來引用該俱樂部。無法修改數據庫中的值

所以當用戶點擊俱樂部的名字時,我想設置這個current_club_id。這裏是_clubs.html.erb,這是在用戶呈現/顯示

<tr> 
    <td class="club"> 
    <span class="nom"><%= button_to club.nom, {:action => "assign_current_club", :controller => "users", :id => current_user.id, :club_actif_id => club.id } %></span> 
    </td> 
</tr> 

,這裏是在Users_controller

def assign_current_club 
    @club = Club.find(params[:club_actif_id]) 
    @user = User.find(params[:id]) 
    @user.current_club_id = @club.id 
    @user.save 
    redirect_to @club 
    end 

的assign_current_club方法出於某種原因,在「current_club_id」無法修改/更新。 請幫忙!

+1

如果無法保存'@ user','@ user.errors.full_messages.to_sentence'應該有錯誤。否則請嘗試使用@ user.save!並且錯誤將顯示在您的日誌中 – Vic

+0

我收到以下錯誤: 密碼不能爲空並且密碼太短(最少爲6個字符) 您知道可能的原因嗎?我以用戶身份登錄...也許這是因爲我的模型中有一個attr_accessor:password?我已經通過遵循Rails 3的rails教程來完成這個工作。我正在使用Rails 4 –

+0

由於驗證驗證:password,:presence => true,所以發生此錯誤。我通過添加:if =>:驗證密碼來解決它。謝謝你的幫助,你是救命恩人! –

回答

0
#config/routes.rb 
resources :users do 
    get :assign_current_club, on: :member, as: :assign_current_club #-> url.com/users/:id/assign_current_club 
end 

<%= button_to club.nom, assign_current_club_path(current_user.id), params: {club_actif_id: club.id} %> 

def assign_current_club 
    @user = User.find params[:id] 
    redirect_to clubs_path(params[:club_actif_id]) if @user.update(current_club_id: params[:club_actif_id]) 
end 

你需要確保你在你的User模型有club_actif_id

如果它存在於User模型中,您應該能夠傳遞上述代碼以使其更改。您需要不需要需要attr_accessible(Rails 3只需要Rails 3)。

+0

OP問題並非由模型中不存在'current_club_id'引起,因爲會引發'NoMethodError'。 – Oleander

+0

這樣做會使我收到以下錯誤消息: 未定義的方法'assign_current_club_path'爲#<#:0x007fe5db655c70> –

+0

您能輸出您的'rake routes'命令嗎? –