【问题标题】:How do you Edit where nested resource is involved?您如何编辑涉及嵌套资源的位置?
【发布时间】:2014-01-10 19:39:22
【问题描述】:

我正在学习嵌套资源,并在尝试编辑事件时收到以下错误。事件资源嵌套在用户资源下。有什么建议吗?

     ActiveRecord::RecordNotFound:
       Couldn't find Event with id=133 [WHERE "user_events"."user_id" = $1]
     # ./app/controllers/events_controller.rb:32:in `edit'
     # ./spec/features/user_edits_reg_info.rb:69:in `block (2 levels) in <top (required)>'

事件控制器

def edit
    @event = current_user.events.find(params[:id])
  end

【问题讨论】:

    标签: ruby-on-rails database nested rails-activerecord


    【解决方案1】:

    听起来 id=133 的Event 不属于current_user,而是属于不同的用户。

    假设您通过类似于 /users/1/events/133/edit 的 URL 访问此用户,您应该从 :user_id 参数(在我的示例中为 1)找到用户,而不是使用 current_user

    def edit
      @user = User.find(params[:user_id])
      @event = @user.events.find(params[:id])
    end
    

    【讨论】:

    • 那也没用。当我运行测试以创建事件时,它们已正确关联,我希望这是真的。
    猜你喜欢
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多