gpt4 book ai didi

ruby-on-rails - Rails 3 是否嵌套资源?

转载 作者:行者123 更新时间:2023-12-03 00:19:44 24 4
gpt4 key购买 nike

我有一家“公司”,其中有“项目”。随着时间的推移,我们现在需要添加与“项目”相关的“链接”。我的路线目前如下所示:

resources :companies do
resources :projects do
resources :links
end
end

由于嵌套了 2 层,这似乎是错误的。如果我像这样嵌套,我也不再有 new_company_project_path(@company) 了,这让我无法为公司创建项目。

在接下来的几个月里,我将需要添加与项目相关的其他模型。

这是我的项目模型和链接模型..

class Link < ActiveRecord::Base
attr_accessible :link_name, :url, :description

belongs_to :project
end

class Project < ActiveRecord::Base
belongs_to :company
belongs_to :user

validates :title, :presence => true

validates :description, :presence => true,
:length => { :minimum => 10 }
end

嵌套似乎不是正确的方法。如果嵌套不是正确的方法,那么如何保存关联呢?例如,在我当前的 Controller 中,我通过执行以下操作保存嵌套对象:

class ProjectsController < ApplicationController
before_filter :authenticate_user!
before_filter :find_company

def new
@project = @company.projects.build
end

def create
@project = @company.projects.build(params[:project])
if @project.save
flash[:notice] = "Project has been created."
redirect_to [@company, @project]
else
flash[:alert] = "Project has not been created."
render :action => "new"
end
end

private
def find_company
@company = Company.find(params[:company_id])
end
end

我找不到太多关于这个主题的信息,而且我之前读过的书只使用了 1 层深度的嵌套路由,而其他的则根本不嵌套。

那么,最好的方法是什么,以便我可以拥有与“项目”相关的“链接”和其他模型,同时“项目”仍然与“公司”相关?

最佳答案

您可以使用浅嵌套路由来处理它,如下所示:

resources :companies do
resources :projects
end

resources :projects do
resources :links
resources :sausages
resources :patties
end

然后你就有了 new_company_project_path、new_project_link_path 等路由。

关于ruby-on-rails - Rails 3 是否嵌套资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com