gpt4 book ai didi

mysql - 通过 Rails 中的按钮调用 Controller 方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:39:56 25 4
gpt4 key购买 nike

我想在 views/companies/edit.html.haml 中为 destroy_referrals 方法创建一个按钮,但我无法让该按钮工作。为了在按钮上调用操作,我尝试创建一个新路由,但我仍然收到错误消息无法为 CompaniesController 找到操作“destroy_referrals”

我在 Admin::CompaniesController 中创建了一个 destroy_referrals 方法,

def destroy_referrals
load_company
@company.destroy_referrals
flash[:notice] = 'Referrals deleted'
redirect_to :action => :index
end

它操纵 company.rb 模型来查找来自具有相同 company_id 的用户的推荐并销毁它们,

def destroy_referrals
Referral.joins(:user).where("users.company_id = ?", self.id).destroy_all
end

我在下面尝试过的一些事情......

路线.rb

post '/destroy_referrals' => 'admin/companies#destroy_referrals', :as => 'destroy_referrals'

views/companies/edit.html.haml

= button_to 'Destroy Referrals', destroy_referral_path

= button_to 'Destroy Referrals', admin_company_destroy_referral_path(@company)

最佳答案

  1. HTML 链接(不是“按钮”)没有连接起来直接调用“方法”。
  2. button_to 方法创建一个 HTML 按钮,其行为类似于链接,但具有不同的视觉样式。
  3. Ruby 有方法,这是一种常见的编程结构。
  4. HTML 链接有一个 href 属性,浏览器可以通过向其发出后续 HTTP 请求来遵循该属性。
  5. 当浏览器向您的 Rails 应用程序发送请求时,该应用程序会使用您的路由来确定如何处理该请求
  6. 在 Rails 中处理请求的传统方法是将其路由到 Controller 操作。
  7. 按照惯例,对 /products/1 的 RESTful 请求可能会路由到 ProductsController 上的 show 操作。
  8. 在 Rails 中,“ Action ”是通过在 Controller 上定义一个方法来创建的。
  9. RESTful 路由反射(reflect)了表示性s状态t传输范例,涉及读取、列出、创建、更新和删除记录/对象.
  10. 要删除(或销毁)一条记录,RESTful 惯例是向 Rails 应用程序发送一个 DELETE 请求,该请求将被路由到相关 Controller 的 destroy 操作,由 destroy 方法定义。
  11. 您可以使用 link_to 帮助器并在参数中指定 method::delete 创建一个 HTML 链接,使浏览器发送此类请求。
  12. 您可以定义一个路由,指示 Rails 使用内置的“足智多谋”路由来处理此类请求:例如资源:产品。或者,可以定义显式路由:delete '/products/:id' => 'products#destroy'

综上所述,Rails 给您的错误是它无法在 CompaniesController 中找到 destroy_referrals 方法。在 Admin::CompaniesController 中定义方法不会解决此问题。

关于mysql - 通过 Rails 中的按钮调用 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42681152/

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