没有 ID 找不到 ProjectSite
Couldn't find ProjectSite without an ID
我有两个模型 - ProjectSite
和 Project
。
我在 project_sites table 中上传了一个文件,现在我想在 projects#index
中访问该文件。但是我收到一个错误
Couldn't find ProjectSite without an ID
Project 和 ProjectSite 之间存在一对多关联。
projects_controller.rb
before_action :find_project_sites?
def find_project_sites?
@project_sites = ProjectSite.find(params[:project_site_id])
end
在控制器视图中
<% @project_sites.each do |project_site| %>
<% end %>
这里是schema.rb
create_table "project_sites", force: :cascade do |t|
t.string "attendance"
t.integer "user_id"
t.integer "project_id"
t.index ["project_id"], name: "index_project_sites_on_project_id"
t.index ["user_id"], name: "index_project_sites_on_user_id"
end
create_table "projects", force: :cascade do |t|
t.string "project_name"
t.datetime "created_at", null: false
t.integer "user_id"
end
routes.rb
resources :project_sites
resources :projects
devise_for :users
project.rb(型号)
has_many :projects
has_many :project_sites
解析操作时 project#index
你的参数是空的,所以 params[:project_site_id]
显然是 nil
,因为你在操作集合,而不是单个对象。
我仍然不确定您要达到什么目的,但我猜您正在尝试在 Project
模型与 ProjectSite
上建立 has_many
关联。
在模型中正确设置关联后,在 #index
您可以为每个索引项目达到 project_sites
:
Project.all.each do |project|
project.project_sites
end
关于成员操作(#show
、#create
、#edit
、#update
等)您需要设置项目
@project = Project.find(:id)
可能会在 :befor_action
内完成,但仅限于 only: [:show, :edit, :create, :update, :destroy]
。接下来你可以通过 @project.project_sites
获取关联站点
我有两个模型 - ProjectSite
和 Project
。
我在 project_sites table 中上传了一个文件,现在我想在 projects#index
中访问该文件。但是我收到一个错误
Couldn't find ProjectSite without an ID
Project 和 ProjectSite 之间存在一对多关联。
projects_controller.rb
before_action :find_project_sites?
def find_project_sites?
@project_sites = ProjectSite.find(params[:project_site_id])
end
在控制器视图中
<% @project_sites.each do |project_site| %>
<% end %>
这里是schema.rb
create_table "project_sites", force: :cascade do |t|
t.string "attendance"
t.integer "user_id"
t.integer "project_id"
t.index ["project_id"], name: "index_project_sites_on_project_id"
t.index ["user_id"], name: "index_project_sites_on_user_id"
end
create_table "projects", force: :cascade do |t|
t.string "project_name"
t.datetime "created_at", null: false
t.integer "user_id"
end
routes.rb
resources :project_sites
resources :projects
devise_for :users
project.rb(型号)
has_many :projects
has_many :project_sites
解析操作时 project#index
你的参数是空的,所以 params[:project_site_id]
显然是 nil
,因为你在操作集合,而不是单个对象。
我仍然不确定您要达到什么目的,但我猜您正在尝试在 Project
模型与 ProjectSite
上建立 has_many
关联。
在模型中正确设置关联后,在 #index
您可以为每个索引项目达到 project_sites
:
Project.all.each do |project|
project.project_sites
end
关于成员操作(#show
、#create
、#edit
、#update
等)您需要设置项目
@project = Project.find(:id)
可能会在 :befor_action
内完成,但仅限于 only: [:show, :edit, :create, :update, :destroy]
。接下来你可以通过 @project.project_sites