Rails 5:创建具有 belongs_to 关联的对象 belongs_to 用户
Rails 5: Creating an object with a belongs_to association that belongs_to user
在开发我的第一个 rails 应用程序时,我遇到了困难。我已经非常努力地自己解决这个问题,但我似乎无法弄清楚。我在制作 belongs_to 对象 belongs_to 用户的对象时遇到问题。
这些是模型关联结构:
class User < ApplicationRecord
has_many :projects, dependent: :destroy
class Project < ApplicationRecord
belongs_to :user
has_many :docs, dependent: :destroy
class Doc < ApplicationRecord
belongs_to :project
我想我需要以某种方式引用我正在尝试构建的文档所属的项目,但我被卡住了。如果我在文档表单中添加一个 hidden_field_tag 以传入 project_id,然后在文档控制器中使用一个参数将 @project 分配给那个 project_id,这是有效的,但我知道有比发送 hidden_field_tag...
更好的方法
关于研究内容或解决方案的任何想法?我觉得我缺少一些非常基本的东西!
在您用来创建 sheet 的表单中(如果该页面可以访问 @project ,可能是 show.html.erb 个项目)
form_for([@project, @project.sheets.build]) do |f|
#rest of the code
end
如果表单没有访问@project 那么
在 Sheets 控制器的新操作中
@project = Project.find(params[:project_id]) #using data from params hash
@sheet = @project.sheets.build
并在表单中创建 sheet
form_for([@project, @sheet]) do |f|
end
在 sheet 控制器的创建操作中
@project = Project.find(params[:project_id])
#rest of the code what you have
虽然可能有更标准的用例类型的答案,但以下对我有用。
我在用户 table 中创建了一个新列,用于在 active_project 中存储一个整数以引用项目的 ID。在制作文档时,我首先将@project 设置为id 为current_user.active_project 的项目,然后将文档创建为属于@project。
这可能有点落后,但它有效,我可以使用 active_project 数据让用户重新访问他们上次打开的项目登录。感谢@pavan 的建议,他们让我走上了正确的道路! :)
在开发我的第一个 rails 应用程序时,我遇到了困难。我已经非常努力地自己解决这个问题,但我似乎无法弄清楚。我在制作 belongs_to 对象 belongs_to 用户的对象时遇到问题。
这些是模型关联结构:
class User < ApplicationRecord
has_many :projects, dependent: :destroy
class Project < ApplicationRecord
belongs_to :user
has_many :docs, dependent: :destroy
class Doc < ApplicationRecord
belongs_to :project
我想我需要以某种方式引用我正在尝试构建的文档所属的项目,但我被卡住了。如果我在文档表单中添加一个 hidden_field_tag 以传入 project_id,然后在文档控制器中使用一个参数将 @project 分配给那个 project_id,这是有效的,但我知道有比发送 hidden_field_tag...
更好的方法关于研究内容或解决方案的任何想法?我觉得我缺少一些非常基本的东西!
在您用来创建 sheet 的表单中(如果该页面可以访问 @project ,可能是 show.html.erb 个项目)
form_for([@project, @project.sheets.build]) do |f|
#rest of the code
end
如果表单没有访问@project 那么 在 Sheets 控制器的新操作中
@project = Project.find(params[:project_id]) #using data from params hash
@sheet = @project.sheets.build
并在表单中创建 sheet
form_for([@project, @sheet]) do |f|
end
在 sheet 控制器的创建操作中
@project = Project.find(params[:project_id])
#rest of the code what you have
虽然可能有更标准的用例类型的答案,但以下对我有用。
我在用户 table 中创建了一个新列,用于在 active_project 中存储一个整数以引用项目的 ID。在制作文档时,我首先将@project 设置为id 为current_user.active_project 的项目,然后将文档创建为属于@project。
这可能有点落后,但它有效,我可以使用 active_project 数据让用户重新访问他们上次打开的项目登录。感谢@pavan 的建议,他们让我走上了正确的道路! :)