0

我正在使用 rails4 也是 ROR 的新手。

我正在使用设计来创建用户。通过“user_workspace”模型存在与用户相关的“workspace”模型。

用户.rb

class User < ActiveRecord::Base
   devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
   has_many :user_workspaces
   has_many :workspaces, through: :user_workspaces
end

工作区.rb

 class Workspace < ActiveRecord::Base
    has_many :users, through: :user_workspaces
    has_many :user_workspaces
 end

user_workspace.rb

class UserWorkspace < ActiveRecord::Base
    belongs_to :user
    belongs_to :workspace
end

我想创建一个工作区并在索引页面中显示它

工作区控制器

def create
  @user=User.find(params[:id])
  @user_worspace = @user.user_workspaces.build(params[:user_worspace])
  @workspace = @user_worspace.build_workspace(params[:workspace].permit(:name))
 if @workspace.save
 flash[:notice] = "workspace created"
     redirect_to workspaces_path
 else
    flash[:error] = "Name cant be blank"
    redirect_to workspaces_path
 end
end

 def index
  @user=User.find(params[:id])
  @user_worspace = @user.user_workspaces.build(params[:user_worspace])
  @workspace = @user_worspace.build_workspace

  @users = current_user.user_workspaces.collect(&:workspace_id)
  @workspaces =@users.workspaces.all
 end

当我使用模态视图从索引页面创建新工作区时,我在索引中给出了新的。

index.html.erb

 <div class = "container">
<% if @users.present? %>
    <% @workspaces.each do |workspace| %>
      <div class= "workspace-list"> 
      <strong><%= link_to workspace.name, workspaces_show_path(workspace.id) %></strong>       </div>
   <% end %>
   <% end %>
</div>

我想知道使用 has_many :throught 关联创建和显示事物的确切方式。

4

0 回答 0