0

我正在开发一个 Rails 应用程序(我的 Rails 技能生疏了)。其中我目前有四个模型,用户、帐户、协作者(从用户*-*帐户连接表)和项目。每个用户可以拥有多个帐户,而这些帐户又可以拥有多个项目。我目前在为正确的帐户创建项目时遇到了一些麻烦。我的目标是在同一页面上显示用户帐户(也可以称为公司)和帐户项目,并让项目在同一页面上创建操作。像这样的东西:

Logo 

(current_user) Account 1 (ie. Company account)
  Account Project 1
  Account Project 2
  text_field for creating new projects for Account 1 + submit button

(current_user) Account 2 (ie. My fun hobby projects)
  Account Project 1
  Account Project 2
  text_field for creating new projects for Account 2 + submit button

我在创建用户和帐户方面没有任何问题,但我不确定如何在创建帐户项目时达到上述结果。

Account 和 Project 的模型和关系如下所示:

class Account < ActiveRecord::Base
  [...]
  has_many :projects, dependent: :destroy
  [...]

class Project < ActiveRecord::Base
  [...]
  belongs_to :account
end   

我做了一个绊脚石的尝试来创建这样的新项目:

class ProjectsController < ApplicationController
  [...]  
  def create
    # How do I find the selected/correct account?
    @project = "selected_account".projects.build(params[:projects])
    if @project.save
      flash[:success] = "Project created!"
      redirect_to root_path
    else
      render 'pages/home'
    end
  end 

我的问题可能会缩小到如何在 ProjectControllers 创建操作中找到选定/正确的帐户?

任何答案、指导或提示都会很棒。

谢谢。

4

1 回答 1

1

假设您有一个返回当前登录用户的“当前用户”方法,您可以尝试以下操作:

添加到路线

resources :accounts do
  resources :projects
end

检查路线

..从命令行做'rake routes'

account_projects GET    /accounts/:account_id/projects(.:format)     projects#index
                 POST   /accounts/:account_id/projects(.:format)     projects#create

发布 /accounts/1/projects

class ProjectsController < ApplicationController
  [...]  
  def create
    account = current_user.accounts.find params[:account_id]
    @project = account.projects.build(params[:projects])
    if @project.save
      flash[:success] = "Project created!"
      redirect_to root_path
    else
      render 'pages/home'
    end
  end 
end
于 2012-04-07T20:54:27.117 回答