0

私はrails4を使用していますが、RORも初めてです。

私はデバイスを使用してユーザーを作成しています。「user_workspace」モデルのほかに、ユーザーに関連する「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

ワークスペース.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

モーダルビューを使用してインデックスページから新しいワークスペースを作成しているため、インデックスに new を指定しました。

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