2016-08-22 35 views
0

我正在構建應用程序以存儲體育比賽,因此所有用戶都將被放置在獨立的聯賽中。我爲此設置了多對多的功能,但是當用戶查看應用程序時,他只能看到來自current_league的所有信息。使用循環中的值更新屬性

現在我正在嘗試讓用戶所在的所有聯賽循環,用戶應該能夠點擊聯盟來改變它的活躍聯賽。

路線

resources :users do 
    member do 
     post :change_current_league 

    end 
    end 

UserController的

def change_current_league 
    @user = current_user 
    @user.update(:current_league_id, params[:league_id]) 
    redirect_to :back, :notice => "Successfully changed your active league" 
end 

查看

<% current_user.leagues.each do |l| %> 


<%= link_to change_current_league_user_path(current_user, l), method: :post, class: 'btn btn-default btn-sm' do %> 



        <%= l.id %><%= l.league_name %><br> 
<% end %> 




<% end %> 

我應該怎麼做來得到這個工作?

很抱歉,如果它有點小白問題:P

編輯:

def change_current_league 
    @user = current_user 
    @user.update_attribute(:current_league_id, 1) 
    redirect_to :back, :notice => "Successfully changed your active league" 
end 


    resources :users do 
    member do 
     patch :change_current_league 

    end 
    end 

這是工作,但我如何才能正確league_id到用戶控制器?

EDIT2:

def change_current_league 
    @league = League.find(params[:league_id]) 

    @user = current_user 

    @user.update_attribute(:current_league_id, @league) 

    redirect_to :back, :notice => "Successfully changed your active league" 
end 
+0

要更新使用替代r atrribute所以它的一個放/補丁請求不發佈方法 – Navin

+0

通過league_id作爲參數與您的鏈接,像這樣 <%= link_to change_current_league_user_path(current_user,current_league_id:l.id),方法:: patch,class:'btn btn -default btn-sm'do%> – Navin

+0

好的,thx。現在我已經在用戶控制器中試過了(檢查編輯)。但它更新字段爲零現在.. –

回答

1

試試這個, 要更新的用戶屬性,以便其認沽/補丁請求不發佈request.pass的league_id與你的鏈接像這樣的參數,

<%= link_to change_current_league_user_path(current_user, current_league_id: l.id), method: :patch, class: 'btn btn-default btn-sm' do %> 

,並在UserController的(檢查編輯)與波紋線

@user.update_attribute(current_league_id: params[:current_league_id])