我仍然对rails很新,所以请原谅我,如果这真的很容易。
我正在开发一个允许用户创建并拥有许多客户端的演示CRM。但是,我也希望同一个用户能够指定其他用户在该客户端上工作。添加后,任何用户都可以将其他用户添加到客户端。我很难确定适当的控制器操作是什么。
我目前有has_many通过:关系如下:
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 %>
有人能指出我能做什么的正确方向吗?我已经被困在这几天了。
答案 0 :(得分: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") %>