gpt4 book ai didi

ruby - Controller 方法 Rails 5 上的 NoMethodError

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:50 27 4
gpt4 key购买 nike

编辑 #2

这是我点击勾号时的服务器日志

Started PUT "/course_modules/module-1-understanding-email-marketing-basics/complete" for 127.0.0.1 at 2018-09-19 16:29:42 +0100
Processing by CourseModulesUsersController#complete as HTML
Parameters: {"authenticity_token"=>"CfIM56PhiIRumytV99CE7GFK6tYumCgDvBwUS79jhbCr3zpXLfbJgvqUFkzwmKLXQiOxk1SmFvGoO4+M1z87wg==", "id"=>"module-1-understanding-email-marketing-basics"}
CourseModulesUser Load (0.7ms) SELECT "course_modules_users".* FROM "course_modules_users" WHERE "course_modules_users"."id" = $1 LIMIT $2 [["id", 0], ["LIMIT", 1]]
↳ app/controllers/course_modules_users_controller.rb:3
Completed 500 Internal Server Error in 6ms (ActiveRecord: 0.7ms)



NoMethodError (undefined method `complete=' for nil:NilClass):

app/controllers/course_modules_users_controller.rb:4:in `complete'

编辑 #1

这就是我现在的位置。

我可以使用 Rails 控制台访问记录

irb(main):017:0> @course_modules_users = CourseModulesUser.find_by(id: 1)
CourseModulesUser Load (0.4ms) SELECT "course_modules_users".* FROM "course_modules_users" WHERE "course_modules_users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
=> #<CourseModulesUser id: 1, course_module_id: 1, courses_user_id: 1, complete: false, created_at: "2018-09-19 13:04:16", updated_at: "2018-09-19 14:58:17">
irb(main):018:0> @course_modules_users.complete = true
=> true

如果我尝试像这样基于 bool 值进行检查

<% if @course_modules_users.where(complete: true).nil? %>
<i class="fas fa-check text-green float-left mr-1"></i>
<span class="text-xs mr-2">Completed</span>
<% else %>
<%= link_to complete_course_module_path(course_module), method: :put do %>
<i class="fas fa-check text-grey-darkest float-left mr-2"></i>
<% end %>
<% end %>

显示为

image

但是如果我手动更改一条记录

image

前端没有变化

image

原创

这是我的错误:

image

所以我目前有一个路由设置,一旦单击它就会触发以下 complete 方法,并将记录更改为 true。但是,如您所见,它找不到完整的方法。

这是数据库

database

我已经在终端测试过了,它可以找到完整的字段

termial

最佳答案

错误表明 @course_modules_usernil,注意 complete 方法有误。所以你已经定义了

@course_modules_user = CourseModulesUser.find_by(id: params[:id]) 

检查 params 并确保您在 course_modules_users 表中有一个包含 params[:id] 值的记录,以便 @course_modules_user 不是零。

更新:

当您使用 friendly_id 时,id 的值作为 slug 发送。所以告诉 Rails 不要像这样更改 link_to

<%= link_to complete_course_module_path(course_module.id), method: :put do %>

关于ruby - Controller 方法 Rails 5 上的 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52408362/

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