gpt4 book ai didi

ruby-on-rails - Rails - 如何使用 link_to 更改数据库中的 bool 值?

转载 作者:行者123 更新时间:2023-12-01 10:54:22 25 4
gpt4 key购买 nike

在我的应用程序中,我试图创建一个允许用户提交项目提案的链接。当用户准备好提交审查时,用户将单击该链接,这会导致 bool 值“submitreview”被标记为 true。

我按照这篇文章作为指导:Rails 3 how do I use link_to to change the value of a boolean in the db? .

现在, bool 值不会从 false 变为 true,它还会被重定向到以下 URL:http://localhost:3000/projects?submitreview=false

任何帮助将不胜感激,谢谢!

* UPDATE * 我已经根据建议更新了下面的代码,并且在我点击链接后成功更新了 bool 值。应该注意的是,这个包含链接的“表单”也呈现在新项目表单上。所以我现在的问题是,当我点击新项目时 <%= link_to 'Start your project', new_project_path %> ,我在下面收到以下新错误。当我删除表单中的 link_to submitreview 时,没有错误出现并且 new_project 呈现得很好。我的猜测是 new_project 尚未为项目创建 ID,在 def submitreview 中有一个调用.这个能解决吗?

Routing Error
No route matches {:action=>"submitreview", :controller=>"projects", :id=># ... }

projects/_form.html.erb

<%= link_to "Submit Proposal", submitreview_project_path(@project), method: :put, class: "btn btn-primary" %>

projects_controller.rb

def submitreview
@project = Project.find(params[:id])
@project.update_attributes(submitreview: true)
redirect_to project_path(@project)
end

routes.rb

resources :projects do
member do
get :submitreview
put :submitreview
end
end

rake 路

submitreview_project GET    /projects/:id/submitreview(.:format)                 projects#submitreview
PUT /projects/:id/submitreview(.:format) projects#submitreview

最佳答案

试试这个:

def submitreview
@project = Project.find(params[:id])
@project.update_attributes(submitreview: true)
redirect_to projects_path(submitreview: false)
end

此外,运行 rake routes 以确保路由是 PUT 而不是 GET

您也可以简化您的link_to,假设路线是submitreview_projects:

<%= link_to "Submit Proposal", submitreview_projects_path(@project), method: :put %>

最后一点:您可能希望将所有 submitreview 更改为 submit_review 以提高可读性。

关于ruby-on-rails - Rails - 如何使用 link_to 更改数据库中的 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16250648/

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