通过has_many创建和查看:通过关联rails

时间:2013-10-31 13:08:04

标签: ruby-on-rails ruby devise has-many-through

我使用的是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创建和显示内容的确切方法:通过关联。

0 个答案:

没有答案