我正在开发一个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
我在创建用户和帐户方面没有任何问题,但我不确定如何实现创建帐户项目的上述结果。
帐户和项目的模型和关系如下所示:
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创建操作中找到所选/正确的帐户?
任何答案,指导或提示都会很棒。
感谢。
答案 0 :(得分: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
POST / 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