0

我对rails还是有点陌生​​,所以如果这真的很容易,请原谅我。

我正在开发一个演示 CRM,它允许用户创建并拥有许多客户。但是,我也希望同一用户能够分配其他用户在该客户端上工作。添加后,任何用户都可以将其他用户添加到客户端。我对允许这样做的适当控制器操作有什么困难。

我目前有 has_many through: 关系如下:

class User < ActiveRecord::Base
  has_many :cases
  has_many :clients, through: :cases
end

class Client < ActiveRecord::Base
  has_many :cases
  has_many :users, through: :cases
end

class Case < ActiveRecord::Base
  belongs_to :user
  belongs_to :client
end

目前,我希望这样当您看到客户端页面 (show.html.erb) 时,您可以将人员添加到 @client.users。

到目前为止我有这个:

class ClientsController < ApplicationController

  def show
    @client = Client.find(params[:id])
    @users = User.all
  end

  def add_user_to
    @client = Client.find(params[:id])
    @selected_user = (params[:user_id])
    @client.users << @selected_user
  end
end

我正在使用 add_user_to_client_path 的 post 方法的路由

我用来提交的表单在 show.html.erb 中,如下所示:

<%= form_tag(add_user_to_client_path, method: :post) do %>
  <%= select_tag options_from_collection_for_select(User.all, "id", "first_name") %>
  <%= submit_tag "Add Client Member", class: "btn btn-large btn-primary" %>
<% end %>

谁能指出我能做什么的正确方向?我已经坚持了几天了。

4

1 回答 1

1

您还需要找到用户,更改此行:

@selected_user = (params[:user_id])

@selected_user = User.find(params[:user_id])

更新:

你需要给一个名字select_tag

<%= select_tag 'user_id', options_from_collection_for_select(User.all, "id", "first_name") %>
于 2013-08-23T03:45:01.023 回答