我使用的是rails4,也是ROR的新手。
我正在使用设计创建用户。通过“user_workspace”模型存在与用户相关的“工作空间”模型。
user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :user_workspaces
has_many :workspaces, through: :user_workspaces
end
workspace.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
我想创建一个工作区并在索引页面中显示它
workspace_controller
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创建和显示内容的确切方法:通过关联。