使用循环

时间:2016-08-22 13:03:11

标签: ruby-on-rails

我正在构建一个用于存储体育游戏的应用程序,因为所有用户都将被放置在单独的联赛中。我为此设置了多对多但是当用户查看应用程序时,他只能看到来自它的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

1 个答案:

答案 0 :(得分:1)

试试这个, 您正在更新用户属性,因此其put / patch请求不会发布请求。将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])