无法修改数据库中的值

时间:2016-02-07 08:42:10

标签: ruby-on-rails

我正在尝试创建一个与用户有很多俱乐部的足球相关应用。在这种情况下,当用户与他的一个俱乐部进行交互时,我想要用户“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”。 请帮忙!

1 个答案:

答案 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需要)。