我正在尝试创建一个与用户有很多俱乐部的足球相关应用。在这种情况下,当用户与他的一个俱乐部进行交互时,我想要用户“current_club_id”中的变量来指代所述俱乐部。
因此,当用户点击俱乐部的名称时,我想设置此current_club_id。这是_clubs.html.erb,它在User / show
中呈现<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中的assign_current_club方法
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
由于某种原因,无法修改/更新“current_club_id”。 请帮忙!
答案 0 :(得分: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
您需要确保club_actif_id
模型中有User
。
如果它存在于User
模型中,您应该能够传递上述代码以使其更改。 不在Rails中需要attr_accessible
(只有Rails 3需要)。