gpt4 book ai didi

ruby-on-rails - 使用另一个模型 ID 的 Rails 自定义路由

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

我想创建一个自定义路由,例如 'photos/:user_id/:photo_id' 来显示每张照片。在我的路线文件中;

get 'photos/:user_id/:photo_id' => 'photos#show', :as => 'user_photo'

rake routes 给我

user_photo GET       /photos/:user_id/:photo_id(.:format)   photos#show

编辑;

现在,当我使用 link_to 'some photo', user_photo_path(@photo,@user) 链接到照片时,我只收到以下错误

Processing by PhotosController#show as HTML
Parameters: {"user_id"=>"8", "photo_id"=>"8"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = 8 ORDER BY "users"."id" ASC LIMIT 1
Completed 404 Not Found in 3ms

ActiveRecord::RecordNotFound - Couldn't find Photo without an ID:
activerecord (4.1.1) lib/active_record/relation/finder_methods.rb:402:in `find_with_ids'
activerecord (4.1.1) lib/active_record/relation/finder_methods.rb:68:in `find'
activerecord (4.1.1) lib/active_record/querying.rb:3:in `find'
() Users/batman/code/myapp/app/controllers/photos_controller.rb:73:in `set_photo'

最佳答案

您需要将其添加到参数中:

link_to 'some photo', user_photo_path(@photo.user, @photo)

第二个错误是由您查找照片的方式引起的。您很可能会:

photo = Photo.find(params[:id])

如果是这种情况,您需要将 params[:id] 更改为 parmas[:photo_id](如果在 中完成,可能会阻止其他操作before_filter 或将您的路线更改为:

get 'photos/:user_id/:id' => 'photos#show', :as => 'user_photo'

关于ruby-on-rails - 使用另一个模型 ID 的 Rails 自定义路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24302539/

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