gpt4 book ai didi

ruby-on-rails - rails 路线无法正确重定向

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:06 26 4
gpt4 key购买 nike

我的数据层次结构是“案例”有很多“类别”有很多“任务”

我遵循文档,资源的嵌套深度不应超过 1 层。因此,我使用 shallow 如下:

我的路线.rb

resources :cases do
resources :categories, :shallow => true do
resources :tasks, :shallow => true
end
end

rake 路

     category_tasks GET    /categories/:category_id/tasks(.:format)     tasks#index
POST /categories/:category_id/tasks(.:format) tasks#create
new_category_task GET /categories/:category_id/tasks/new(.:format) tasks#new
edit_task GET /tasks/:id/edit(.:format) tasks#edit
task GET /tasks/:id(.:format) tasks#show
PATCH /tasks/:id(.:format) tasks#update
PUT /tasks/:id(.:format) tasks#update
DELETE /tasks/:id(.:format) tasks#destroy
case_categories GET /cases/:case_id/categories(.:format) categories#index
POST /cases/:case_id/categories(.:format) categories#create
new_case_category GET /cases/:case_id/categories/new(.:format) categories#new
edit_category GET /categories/:id/edit(.:format) categories#edit
category GET /categories/:id(.:format) categories#show
PATCH /categories/:id(.:format) categories#update
PUT /categories/:id(.:format) categories#update
DELETE /categories/:id(.:format) categories#destroy
cases GET /cases(.:format) cases#index
POST /cases(.:format) cases#create
new_case GET /cases/new(.:format) cases#new
edit_case GET /cases/:id/edit(.:format) cases#edit
case GET /cases/:id(.:format) cases#show
PATCH /cases/:id(.:format) cases#update
PUT /cases/:id(.:format) cases#update
DELETE /cases/:id(.:format) cases#destroy
root GET / cases#index

我已将类别 View 放入 case/show.html.erb 以显示本例中的类别。

cases#show 的 url 是 localhost:3000/cases/9

如果我想创建一个新类别,链接将是 localhost:3000/cases/9/categories/new

redirect_to cases#show page with my categories#create action 效果很好

def create
@case = Case.find(params[:case_id])
@category = Category.new(category_params)
@category.case = @case
@case.member = current_member

if @category.save
redirect_to case_path(@case)
else
render :new
end
end

但是当我尝试编辑类别并更​​新它时

url 更改为 localhost:3000/categories/2/edit 我不再有 case_id。

它无法重定向回案例#show 页面 localhost:3000/cases/9

我尝试编写与下面的创建操作类似的代码

def update
@case = Case.find(params[:case_id])
@category = Category.find(params[:id])
@category.case = @case

if @category.update(category_params)
redirect_to case_path(@case)
else
render :edit
end
end

但是获取不到case_id和错误信息如下

Couldn't find Case with 'id'=

如何在编辑和更新“类别”后重定向到 localhost:3000/cases/9

最佳答案

shallow: true 根据 documentedit_category 更改为浅路由.浅路由中没有父资源id。

您可以使用 @case = @category.case 代替。不需要 category_id参数

关于ruby-on-rails - rails 路线无法正确重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41176820/

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